繁体   English   中英

更新后的 MSSQL 触发器

[英]MSSQL Trigger After update

1
我在 mssql 中有两个表。 向表中输入数据时,tiger 表中的 STOCK 列应为 -1,如果 STOCK 列等于 0,则 STATUS 应为 false。 请帮忙。

当您将其插入 TBLACTION 仪表板时,它将在 TBLBOOK 仪表板上触发

我英语说得不好。 对不起。

我们为每个要求提供多种解决方案。 让我们试试这个:

  1. 向表中输入数据时,tiger 表中的 STOCK 列应为 -1

  2. 如果 STOCK 列等于 0,则 STATUS 应为 false

  3. 当您将其插入 TBLACTION 仪表板时,它将在 TBLBOOK 上触发 3.a) 有人拿书,插入时列 ReturnDate 应为 NULL; 3.b)有人归还书,那么您应该更新列 ReturnDate

    在开始插入后创建触发器 [dbo].[TBLBOOKInserted] ON [dbo].[TBLBOOK]

    设置无计数;

    更新 TBLBOOK SET STOCK = -1 其中 STOCK 为 NULL 和 ID IN(从 INSERTED 中选择 INSERTED.ID)END GO

    更新开始后在 [dbo].[TBLBOOK] 上创建触发器 [dbo].[TBLBOOKUpdate]

    设置无计数;

    UPDATE TBLBOOK SET BOOKSTATUS = 0 WHERE STOCK = 0 AND ID IN (SELECT INSERTED.ID FROM INSERTED) END GO

    在开始插入后创建触发器 [dbo].[TBLACTIONInsert] ON [dbo].[TBLACTION]

    设置无计数;

    更新 TBLBOOK SET STOCK = STOCK-1,其中 ID 在(从 INSERTED 中选择 INSERTED.BOOK,其中返回为 NULL)END GO

    更新开始后在 [dbo].[TBLACTION] 上创建触发器 [dbo].[TBLACTIONUpdate]

    设置无计数;

    更新 TBLBOOK SET STOCK = STOCK+1,其中 ID 在(SELECT INSERTED.BOOK FROM INSERTED WHERE RETUNDATE 不为 NULL)和 ID 在(SELECT DELETED.BOOK FROM DELETED WHERE RETURNDATE IS NULL)结束 GO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM