【问题标题】:OUTPUT Clause in MySQLMySQL 中的 OUTPUT 子句
【发布时间】:2011-08-14 14:46:59
【问题描述】:

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

这是我的查询类型

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

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

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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:
    1. 您可以创建一个触发器并将您需要的值插入到另一个表中。
    2. 我不确定,但是 - 对于 MISAM 表,您可以锁定 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 statement (FOR UPDATE clause)

    【讨论】:

    • 我想在查询中有一些子句可以做到这一点..无论如何..让我检查一下可能性
    • 我正在使用 InnoDB 并且不想创建触发器,因为这需要我的应用程序进行控制。有没有我可以使用的锁定机制?
    • 我在dba.stackexchange.com/questions/3555/… 中回答了这个问题。供您参考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-14
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多