作者kisha024 (4545454554)
看板Database
标题[SQL ] SQL SERVER 栏位识别的问题
时间Sat Sep 23 16:50:13 2017
资料库名称:SQL SERVER
资料库版本:2016
内容/问题描述:
各位好
TableA 的 SN 是主键 我把它设为识别 且 识别值增量设为1 如下
https://i.imgur.com/rufcKiP.png
TableB 也有SN 参考TableA 的 SN
我的需求是 在TableA新增1笔资料後 马上在TableB也新增1笔资料
我的作法是在TableA新增1笔资料後 去找出TableA中最大的SN 再用此SN去TableB新增1笔资料
但这样做可能有问题
譬如我在TableA新增1笔资料後 在还没来得及去找出TableA最大的SN之前 又有人在TableA新增1笔资料
此时我找到的SN 就不是预期的SN 值会比预期的SN还大1
因为SN被设为识别 所以 我也无法在TableA新增1笔资料前 就知道此次新增SN的值会是多少
我是有想到用trigger 但试了一下 发现不符合需求
想请问 在.NET或SQL SERVER 这个问题有办法解决吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.251.182.4
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1506156615.A.9E4.html
1F:推 rockchangnew: 查一下 output子句 09/24 19:57
谢谢 我以为output只能用在 Store Procedure上 没想到还有其他用法
底下是MSDN上的一句话 我觉得很贴切
「在INSERT或UPDATE 作业之後撷取识别或计算资料行值时,OUTPUT 子句可能很有用。」
https://docs.microsoft.com/zh-tw/sql/t-sql/queries/output-clause-transact-sql
底下是我找到的文章 我觉得很有助益 给有同样问题的人参考
http://www.studyofnet.com/news/1049.html
※ 编辑: kisha024 (60.251.130.136), 10/10/2017 18:17:20