小编典典

MySQL中的输出子句

mysql

有没有一种方法可以模拟MySQL中的OUTPUT子句,因为我们在SQL Server中有一个OUTPUT子句。

这是我的查询类型

UPDATE       employee
SET          empage = 10
OUTPUT       INSERTED.empid
WHERE        (empage < 10)

因为我也需要MySQL服务器数据库具有此功能。

请提出实现此功能的最佳方法。


阅读 943

收藏
2020-05-17

共1个答案

小编典典

  1. 您可以创建触发器并将所需的值插入另一个表。
  2. 我不确定,但是-对于MYISAM表,您可以锁定employee表,选择值并将其插入另一个表,然后更新和解锁employee表。

编辑:

我已经尝试了一种使用InnoDb表的方案,它似乎可以工作-

START TRANSACTION;

SELECT * FROM table WHERE id = 1 FOR UPDATE; -- lock rows
-- Or call this select to insert and lock rows
-- INSERT INTO table_output SELECT * FROM table WHERE id = 1 FOR UPDATE;

-- Make modifications
UPDATE table SET column1 = '111' WHERE id = 1;

COMMIT;

SELECT语句(FOR UPDATE子句)

2020-05-17