sql - 更新后的 MSSQL 触发器
问题描述
我在 mssql 中有两个表。向表中输入数据时,tiger 表中的 STOCK 列应为 -1,如果 STOCK 列等于 0,则 STATUS 应为 false。请帮忙。
当您将其插入 TBLACTION 仪表板时,它将在 TBLBOOK 仪表板上触发
我英语说得不好。对不起。
解决方案
我们为每个要求提供多种解决方案。让我们试试这个:
向表中输入数据时,tiger 表中的 STOCK 列应为 -1
如果 STOCK 列等于 0,则 STATUS 应为 false
当您将其插入 TBLACTION 仪表板时,它将在 TBLBOOK 上触发 3.a) 有人拿书,插入时 ReturnDate 列应为 NULL;3.b)有人归还书,那么您应该更新列 ReturnDate
在开始插入后创建触发器 [dbo].[TBLBOOKInserted] ON [dbo].[TBLBOOK]
设置无计数;
更新 TBLBOOK SET STOCK = -1 WHERE STOCK 为 NULL 且 ID 在(从插入中选择 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]
设置无计数;
UPDATE TBLBOOK SET STOCK = STOCK-1 WHERE ID IN (SELECT INSERTED.BOOK FROM INSERTED WHERE RETUNDATE IS NULL) END GO
更新开始后在 [dbo].[TBLACTION] 上创建触发器 [dbo].[TBLACTIONUpdate]
设置无计数;
更新 TBLBOOK SET STOCK = STOCK+1,其中 ID 在(SELECT INSERTED.BOOK FROM INSERTED WHERE RETURNDATE 不为 NULL)和 ID 在(SELECT DELETED.BOOK FROM DELETED WHERE RETURNDATE 为 NULL)END GO
推荐阅读
- containers - ECS服务不断注销目标组和启动/停止任务
- python - 在 WxPython 中隐藏菜单栏
- php - 来自 php 脚本的响应数据在 ROOT Vue 实例中不可用
- php - preg_split 正则表达式如何拆分字符串?
- python - Pyspark Structred Streaming Parse 嵌套 Json
- firebase - 扑动未处理的异常:PlatformException(sign_in_failed,com.google.android.gms.common.api.ApiException:10:,null)
- php - 在面包屑开头添加“家”
- reactjs - 反应 axios 如何填充反应大日历
- python - Keras 给出 ValueError
- javascript - 选中/取消选中单选按钮 JavaScript