CodeIgniter MSSQL 获取复合主键的 last_id()
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 中的插入中取回复合 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 中获取 OUTPUT,或者我是否必须依赖类似的东西:
(请原谅代码,可能不是最佳实践,只是为了说明问题)
$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();
更新:
您的 select 查询应该是这样的:
$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
我正在为我们公司开发一个需要复合主键的应用程序。
根据要求,组合由 RegionID 和 AuthorizationID 组成,但 AuthroizationID 本身不需要是唯一的。换句话说,他们希望它这样做:
RegionID AuthorizationID
300 1
300 2
100 1
所以我无法在授权时创建一个简单的身份,然后将 RegionID 贴在前面。 (相信我,我尽力不这样做)
无论如何,我在 MSSQL 2008 中创建了一个 INSERT 触发器,输出新插入的 RegionID 和 AuthorizationID,并将其封装在 dbo.vwCreateRA 中。它在 MSSQL Studio 中运行良好。
但是为了让它完全可用,我希望能够从 codeigniter 中的插入中取回复合 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 中获取 OUTPUT,或者我是否必须依赖类似的东西:
(请原谅代码,可能不是最佳实践,只是为了说明问题)
$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();
更新:
您的 select 查询应该是这样的:
$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