主键、外键和唯一约束是如何工作的?我的意思是按什么顺序?
例如,当一个子表有一个FK,并在其中插入了一条记录,而这条记录在父表中并不存在,那么首先将该记录插入到子表中&然后约束检查父表中是否存在该记录,如果没有找到,则回滚并从子表中删除该记录。这是工作的顺序吗?
或者,first SQL是否从insert查询中获取记录(在其上执行FK ),并将其与父表记录进行匹配,并在未找到匹配记录时停止插入,而插入本身并未在子表中插入该行?
类似地,对于主键,如果在表中插入了重复的记录,则先插入它,然后检查它,或者在插入之前先将其与现有记录匹配,如果它是重复记录,则停止查询。
发布于 2011-03-28 18:20:58
从逻辑上讲,所有约束都应该同时针对UPDATE、INSERT或DELETE语句的整个结果进行检查。对约束进行评估,就好像对所有行的修改已经发生一样,如果违反了任何约束,则不允许进行修改。
发布于 2011-03-28 13:55:49
你需要rdbms参考的基础知识。这是免费资源:http://msdn.microsoft.com/en-us/library/aa933098%28v=SQL.80%29.aspx
发布于 2011-03-28 15:35:47
考虑TRIGGER可访问的逻辑(概念性)表deleted和inserted。即使是这些也只是概念。谁知道被子里发生了什么...well肯定有人知道..。但你关心被子里发生了什么吗?在概念层面上,它要么成功,要么失败,或者您可以在触发器中操纵结果。您还需要了解哪些内容?;)
https://stackoverflow.com/questions/5455137
复制相似问题