Я использовал массовое обновление для синхронизации данных между двумя таблицами, как показано ниже.
$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));
Вышеупомянутый запрос также вернет первичный ключ обновленных записей с использованием OUTPUT INSERTED.Id AS 'updated_id'
в редакторе сервера sql, но когда я отлаживаю sql
debug($this->Request->query($sqlProc));
Затем он возвращает true
в случае успешного запроса и false
в случае неудачного запроса.
Есть ли идея получить updated_id
в массив, чтобы я мог использовать эти идентификаторы в другой таблице
1 ответ
Что ж, разобрался наконец. Я создал одну промежуточную таблицу, сделал следующее
//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);
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.