MySQL中的OUTPUT子句

时间:2011-04-28 10:50:38

标签: mysql sql

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

这是我的查询类型

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

因为我需要为MySQL服务器数据库提供此功能。

请建议实现此功能的最佳方式。

1 个答案:

答案 0 :(得分:13)

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

    我尝试过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 statement (FOR UPDATE clause)