在cakephp/sql server中获取更新记录的PK
我使用批量更新在两个表之间同步数据,如下所示在cakephp/sql server中获取更新记录的PK,php,sql,sql-server,cakephp,bulkinsert,Php,Sql,Sql Server,Cakephp,Bulkinsert,我使用批量更新在两个表之间同步数据,如下所示 $sqlProc=" UPDATE cards SET cards.card_no = t2.card_number, cards.expiry_date=t2.expiry_date OUTPUT INSERTED.Id AS 'updated_id' FROM cards INNER JOIN card_temp t2 ON (cards.account_no = t2.account_number
$sqlProc="
UPDATE cards
SET cards.card_no = t2.card_number,
cards.expiry_date=t2.expiry_date OUTPUT INSERTED.Id AS 'updated_id'
FROM cards
INNER JOIN card_temp t2 ON (cards.account_no = t2.account_number
AND cards.customer_name=t2.customer_name)
WHERE cards.is_disabled='N'";
debug($this->Request->query($sqlProc));
上述查询还将在sql server编辑器中使用OUTPUT INSERTED.Id作为“updated\u Id”
返回更新记录的主键,但在调试sql时
debug($this->Request->query($sqlProc));
然后返回true
表示查询成功,返回false
表示查询失败
有没有办法将
更新的\u id
提取到数组中,这样我就可以将这些id用在另一个表中了。我创建了一个中间表,并执行以下操作
//inserted into temp_id (bridge table)
$sqlProc="insert into temp_id select * FROM (update cards
set cards.card_no = t2.card_number,cards.expiry_date=t2.expiry_date
OUTPUT INSERTED.Id AS 'updated_id'
from cards
inner join card_temp t2
on (cards.account_no = t2.account_number and cards.customer_name=t2.customer_name)
where cards.is_disabled='N'
) AS t";
$this->Request->query($sqlProc);
//fetch from intermediate table
$sqlSel="SELECT * FROM temp_id";
$arr=$this->Request->query($sqlSel);
//this array will fetch all updated id's
debug($arr);
$sqlDel="DELETE FROM temp_id";
$this->Request->query($sqlDel);