MrZ*_*der 5 sql-server check-constraints
我有一张记录表
ID
EntityID
Value
Status
Run Code Online (Sandbox Code Playgroud)
和实体表
ID
Col1
Col2
CurrentRecordID
Run Code Online (Sandbox Code Playgroud)
CurrentRecordID应的Record绑在Entity与Status0
我有表两个检查约束之一Entity是检查,以确保CurrentRecordID实际上是对当前记录,一个Record是检查,以确保,如果它具有为0的状态,它EntityID有CurrentRecordID它的ID相符。
所以本质上,这两个检查约束做同样的事情,但分别在每个表上
检查约束是在事务的最后运行还是在表上每次插入/更新后像触发器一样运行?
如果它们在每次修改后运行,这两个约束是否会相互冲突(意味着,约束将在下一个表有机会更新其值之前抛出错误)。
这是运行以插入新记录并将其设置为给定实体的当前查询的示例
UPDATE Record SET Status = 1 WHERE Status = 0 AND EntityID = @EntityID
INSERT INTO Record(EntityID, Value, Status) VALUES(@EntityID, 100, 0)
DECLARE @RecordID INT = @@IDENTITY
UPDATE Entity SET CurrentRecordID = RecordID WHERE ID = @EntityID
Run Code Online (Sandbox Code Playgroud)