[SQLServer外键约束的例子.docVIP

  • 7
  • 0
  • 约5.02千字
  • 约 7页
  • 2017-01-06 发布于北京
  • 举报
[SQLServer外键约束的例子

SQL Server 外键约束的例子 外键约束的测试表与测试数据 --?创建测试主表.?ID?是主键. CREATE?TABLE?test_main?( id??????INT, value???VARCHAR(10), PRIMARY?KEY(id)? ); ? --?创建测试子表.? CREATE?TABLE?test_sub?( id??????INT, main_id?INT, value???VARCHAR(10), PRIMARY?KEY(id)? ); ? --?插入测试主表数据. INSERT?INTO?test_main(id,?value)?VALUES?(1,?ONE); INSERT?INTO?test_main(id,?value)?VALUES?(2,?TWO); ? --?插入测试子表数据. INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(1,?1,?ONEONE); INSERT?INTO?test_sub(id,?main_id,?value)?VALUES?(2,?2,?TWOTWO); ? 默认外键约束方式 1?ALTER?TABLE?test_sub?ADD?CONSTRAINT?main_id_cons?FOREIGN?KEY?(main_id)?REFERENCES?test_main; 2?go 1?DELETE 2???test_main 3?WHERE 4???ID?=?1; 5?go 消息?547,级别?16,状态?1,服务器?HOME-BED592453C\SQLEXPRESS,第?1?行 DELETE?语句与?REFERENCE?约束main_id_cons冲突。该冲突发生于数据库Stock,表db o.test_sub,?column?main_id。 语句已终止。 测试完毕后,删除?外键约束 ALTER?TABLE?test_sub?DROP?CONSTRAINT?main_id_cons; ? ? ? DELETE?CASCADE?方式 1?--?创建外键(使用?ON?DELETE?CASCADE?选项,删除主表的时候,同时删除子表) 2?ALTER?TABLE?test_sub 3???ADD?CONSTRAINT?main_id_cons 4?????FOREIGN?KEY?(main_id)?REFERENCES?test_main?ON?DELETE?CASCADE; 5 6?--?测试删除主表数据.?将成功地执行. 7?DELETE 8???TEST_MAIN 9?WHERE 10???ID?=?1; 11 12?--?测试检索子表,应该只有一条?main_id?=?2?的数据. 13?SELECT 14???* 15?FROM 16???test_sub; 17 18?go (1?行受影响) id??????????main_id?????value -----------?-----------?---------- ??????????2???????????2?TWOTWO (1?行受影响) 测试完毕后,删除?外键约束? ALTER?TABLE?test_sub?DROP?CONSTRAINT?main_id_cons; ? ? ? UPDATE?CASCADE方式 --?创建外键(使用?ON?UPDATE?CASCADE?选项,更新主表的主键时候,同时更新子表外键) 1?ALTER?TABLE?test_sub 2????ADD?CONSTRAINT?main_id_cons 3??????FOREIGN?KEY?(main_id)?REFERENCES?test_main?ON?UPDATE?CASCADE; 4?go --?测试更新主表数据.?将成功地执行. 1?UPDATE?test_main?SET?id?=?5?where?id?=?1 2?go (1?行受影响) --?检查?子表?数据是否被同步更新 1?select?*?from?test_sub 2?go id??????????main_id?????value -----------?-----------?---------- ??????????1??????????5?ONEONE ??????????2???????????2?TWOTWO 测试完毕后,删除?外键约束? ALTER?TABLE?test_sub?DROP?CONSTRAINT?main_id_cons; ? ? ? ? SET?NULL方式 1?--?创建外键(使用?ON?DELETE?SET?NULL?选项,删除主表的时候,同时将子表的?main_i

文档评论(0)

1亿VIP精品文档

相关文档