插入触发器后修改特定值

丹尼尔·卡斯特尔哈诺(Daniel Castelhano)

我的扳机有一些问题。

在我的交易表上,我不允许插入任何被取消的行。

任何交易可能是ScheduledDoneCancelled

如果您插入已取消的交易,我的触发器应检查交易的日期,是否在实际日期(GETDATE()之前Done,以及是否在实际日期之后Scheduled

我执行并奏效,但它不仅更改了插入的行,还更改了旧记录。

CREATE OR ALTER TRIGGER t2222
ON Transacoes 
AFTER INSERT
AS
BEGIN
    UPDATE TRANSACOES 
    SET ESTADO = 'Done' 
    FROM inserted i 
    WHERE (i.ESTADO = 'Cancelada'  AND i.DATA_DA_TRANSACAO < GETDATE())

    UPDATE TRANSACOES 
    SET ESTADO = 'Scheduled' 
    FROM inserted i 
    WHERE (i.ESTADO = 'Cancelada' AND i.DATA_DA_TRANSACAO >= GETDATE())
END
GO
戈登·利诺夫

嗯。您需要某种ID才能将交易表与关联inserted因此,我期望这样的事情:

UPDATE t
    SET ESTADO = (CASE WHEN i.ESTADO = 'Cancelada'  AND i.DATA_DA_TRANSACAO < GETDATE() THEN 'DONE'
                       WHEN i.ESTADO = 'Cancelada' and i.DATA_DA_TRANSACAO >= GETDATE() THEN 'Scheduled'
                  END)
    FROM TRANSACOES t JOIN
         inserted i
         ON i.transaction_id = t.transaction_id
    WHERE (i.ESTADO = 'Cancelada'  AND i.DATA_DA_TRANSACAO < GETDATE()) OR
          (i.ESTADO = 'Cancelada' and i.DATA_DA_TRANSACAO >= GETDATE());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL触发器修改值后插入

来自分类Dev

插入或删除后Oracle触发器

来自分类Dev

插入后的MySQL触发器

来自分类Dev

创建“插入后”触发器

来自分类Dev

插入特定列的触发器检查

来自分类Dev

如何获取触发器的插入值

来自分类Dev

使用触发器更改插入的值

来自分类Dev

使用触发器更改插入的值

来自分类Dev

MySQL触发器在插入之前修改col

来自分类Dev

在触发器中发生插入后,如何获取要设置的温度值?

来自分类Dev

更新MySQL中的特定列后触发触发器

来自分类Dev

SQLPLUS-触发器在插入值时更新值

来自分类Dev

SQLPLUS-触发器在插入值时更新值

来自分类Dev

插入触发器后无法在MySQL中工作

来自分类Dev

插入触发器后的MySQL-MyISAM与InnoDB

来自分类Dev

插入触发器后更新同一表

来自分类Dev

根据更新后的触发器插入更改日志

来自分类Dev

插入触发器错误后的MySQL PHP游戏

来自分类Dev

插入触发器后更新同一表

来自分类Dev

插入触发器后无法在Mysql中工作

来自分类Dev

PLSQL触发器在插入后更新记录

来自分类Dev

创建After Insert触发器后无法插入表

来自分类Dev

插入触发器导致变异表错误后

来自分类Dev

插入后的 SQL 触发器不起作用

来自分类Dev

插入更新和删除后的 SQL Server 触发器

来自分类Dev

使用触发器仅插入或更新特定记录

来自分类Dev

SQL Server 触发器插入/更新特定列

来自分类Dev

使用触发器获取mysql中插入行的值

来自分类Dev

MySQL触发器在插入多次之前检查值