SQL Server中 两个不同的数据库中的两张表如何关联?

创建表时数据类型必须保持一致。
主键表使用唯一标识列。
外键表链接到主键列。
拖动链接。

sql两张表关联删除

嘿嘿,我就来说说我当年掉过的坑吧。
删除这个SQL映射确实很头疼。

例如,2 008 年我在上海做一个项目,两个表是相连的。
一张是用户表,一张是订单表。
如果用户删除了订单,订单就无法保留了,对吗?
1 .级联删除这个东西是最简单的。
当时我直接在users表和orders表的关系中添加了ON DELETE CASCADE。
这是怎么回事?如果用户删除订单,则该订单将自动删除。
全部通过一行代码完成。
当时我觉得这很酷。
一人即可完成,省去麻烦!结果呢?后来,有客户不注意,删除了该用户。
下面列出的所有订单都消失了,客户立即生气了。
此招适合关系特别明确的人,所以不要乱用。

2 存储过程这是一个陷阱。
2 01 2 年北京的另一个项目显示了复杂的联系。
如果删除用户,必须先检查订单,然后才能删除订单。
还需要考虑到订单是链接到products表的,products表和库存表……我写了一个存储过程,但是删除用户、删除订单都花了很长时间,而且产品库存不同步,系统卡了两个小时。
后来我发现代码写得太严格,没有考虑到所有情况。
这个东西虽然灵活,但是写得不好就是个陷阱。

3 触发这个就更难了。
我2 01 5 年在深圳做过一个系统,如果客户坚持删除用户,他们会发送通知并记录日志。
我加了一个扳机,但发现扳机太重了。
每删除一个用户,系统就会慢半个钟。
后来数据库管理员(DBA)来找我,说触发器占用资源,建议改存储过程。
当业务逻辑比较复杂的时候就可以使用这个技巧。
不要盲目添加它们。

摘要:
级联简单但有风险,请谨慎使用。

存储过程灵活,但卡系统写不好。

触发器适合业务逻辑,但不要添加太多。

删除前最重要的是做好备份!在2 008 年的这次事件中,我没有后援,客户差点就解雇了我。
记住:备份、备份、备份!