[英]CodeIgniter MSSQL get last_id() of composite primary key
我正在为我们公司的需要复合主键的应用程序工作。
根据需求,组合由RegionID和AuthorizationID组成,但是AuthroizationID不必自己唯一。 换句话说,他们希望它这样做:
RegionID AuthorizationID
300 1
300 2
100 1
因此,我不能在授权上创建简单的身份,而只能将RegionID放在前面。 (相信我,我竭尽所能不要这样)
无论如何,我在MSSQL 2008中创建了一个INSERT触发器,该触发器输出新插入的RegionID和AuthorizationID,并将其封装在dbo.vwCreateRA中。 它在MSSQL Studio中效果很好。
但是,要使其完全可用,我希望能够从codeigniter中的插入取回Composite PK,以将用户重定向到新创建的记录。
$sql = "INSERT INTO ReturnAuthorizations.dbo.vwCreateRA (
[Region],
[CustomerNumber],
/* a bunch of other fields... */
[UserID]
)
VALUES
?,
?,
/* a bunch of other values */
?)";
$query = $this->db->query($sql, [
$customer['SalespersonNumber'],
$customer['CustomerName'],
/* A bunch of other variables... */
$username
]);
die(var_dump($query->last_id());
给我: Fatal error: Call to a member function last_id() on a non-object
如何通过CodeIgniter从视图的INSERT中获取输出,或者我将不得不依赖于以下内容:
(请原谅代码,可能不是最佳做法,仅是为了说明问题)
$sql = "SELECT TOP 1
RegionID,
Authorization
FROM
AuthorizationTable
WHERE
RegionID = " . $customer['Region'] . "
AND UserID = " . $username . "
ORDER BY
CreateDate DESC";
谢谢!
您应该使用$this->db->insert_id();
更换
$query->last_id();
同
$this->db->insert_id();
更新:
您的选择查询应如下所示:
$sql = "SELECT TOP 1 RegionID, Authorization
FROM AuthorizationTable
WHERE RegionID = '" . $customer['Region'] . "' AND UserID = '" . $username . "'
ORDER BY CreateDate DESC";
参见此处: https : //www.codeigniter.com/user_guide/database/helpers.html#information-from-executing-a-query
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.