电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

SQL Server 外键约束的例子VIP免费

SQL Server 外键约束的例子_第1页
1/7
SQL Server 外键约束的例子_第2页
2/7
SQL Server 外键约束的例子_第3页
3/7
SQLServer外键约束的例子外键约束的测试表与测试数据--创建测试主表.ID是主键.CREATETABLEtest_main(idINT,valueVARCHAR(10),PRIMARYKEY(id));--创建测试子表.CREATETABLEtest_sub(idINT,main_idINT,valueVARCHAR(10),PRIMARYKEY(id));--插入测试主表数据.INSERTINTOtest_main(id,value)VALUES(1,'ONE');INSERTINTOtest_main(id,value)VALUES(2,'TWO');--插入测试子表数据.INSERTINTOtest_sub(id,main_id,value)VALUES(1,1,'ONEONE');INSERTINTOtest_sub(id,main_id,value)VALUES(2,2,'TWOTWO');默认外键约束方式1>ALTERTABLEtest_subADDCONSTRAINTmain_id_consFOREIGNKEY(main_id)REFERENCEStest_main;2>go1>DELETE2>test_main3>WHERE4>ID=1;5>go消息547,级别16,状态1,服务器HOME-BED592453C\SQLEXPRESS,第1行DELETE语句与REFERENCE约束"main_id_cons"冲突。该冲突发生于数据库"Stock",表"dbo.test_sub",column'main_id'。语句已终止。测试完毕后,删除外键约束ALTERTABLEtest_subDROPCONSTRAINTmain_id_cons;DELETECASCADE方式1>--创建外键(使用ONDELETECASCADE选项,删除主表的时候,同时删除子表)2>ALTERTABLEtest_sub3>ADDCONSTRAINTmain_id_cons4>FOREIGNKEY(main_id)REFERENCEStest_mainONDELETECASCADE;5>6>--测试删除主表数据.将成功地执行.7>DELETE8>TEST_MAIN9>WHERE10>ID=1;11>12>--测试检索子表,应该只有一条main_id=2的数据.13>SELECT14>*15>FROM16>test_sub;17>18>go(1行受影响)idmain_idvalue--------------------------------22TWOTWO(1行受影响)测试完毕后,删除外键约束ALTERTABLEtest_subDROPCONSTRAINTmain_id_cons;UPDATECASCADE方式--创建外键(使用ONUPDATECASCADE选项,更新主表的主键时候,同时更新子表外键)1>ALTERTABLEtest_sub2>ADDCONSTRAINTmain_id_cons3>FOREIGNKEY(main_id)REFERENCEStest_mainONUPDATECASCADE;4>go--测试更新主表数据.将成功地执行.1>UPDATEtest_mainSETid=5whereid=12>go(1行受影响)--检查子表数据是否被同步更新1>select*fromtest_sub2>goidmain_idvalue--------------------------------15ONEONE22TWOTWO测试完毕后,删除外键约束ALTERTABLEtest_subDROPCONSTRAINTmain_id_cons;SETNULL方式1>--创建外键(使用ONDELETESETNULL选项,删除主表的时候,同时将子表的main_id设置为NULL)2>ALTERTABLEtest_sub3>ADDCONSTRAINTmain_id_cons4>FOREIGNKEY(main_id)REFERENCEStest_mainONDELETESETNULL;5>6>7>--测试删除主表数据.将成功地执行.8>DELETE9>TEST_MAIN10>WHERE11>ID=2;12>13>--测试检索子表,应该有一条的main_id=null14>SELECT15>*16>FROM17>test_sub;18>19>go(1行受影响)idmain_idvalue--------------------------------2NULLTWOTWO(1行受影响)测试完毕后,删除外键约束ALTERTABLEtest_subDROPCONSTRAINTmain_id_cons;SETDEFAULT方式为了更容易理解,SETDEFAULT方式使用下面这样的测试表与测试数据.--创建测试主表.ID是主键.--班级表.CREATETABLEtest_main_class(idINTNOTNULL,valueVARCHAR(20),PRIMARYKEY(id));--创建测试子表.--学生表.CREATETABLEtest_sub_student(idINTNOTNULL,main_idINTDEFAULT0,valueVARCHAR(10),PRIMARYKEY(id));--插入测试主表数据.INSERTINTOtest_main_class(id,value)VALUES(0,'暂无班级');INSERTINTOtest_main_class(id,value)VALUES(1,'2013级1班');INSERTINTOtest_main_class(id,value)VALUES(2,'2013级2班');--插入测试子表数据.INSERTINTOtest_sub_student(id,main_id,value)VALUES(1,1,'张三');INSERTINTOtest_sub_student(id,main_id,value)VALUES(2,2,'李四');首先测试ONDELETESETDEFAULTALTERTABLEtest_sub_studentADDCONSTRAINTfk_main_classFOREIGNKEY(main_id)REFERENCEStest_main_classONDELETESETDEFAULT;SELECTtest_main_class.valueAS"班级",test_sub_student.valueAS"学生"FROMtest_main_classJOINtest_sub_studentON(test_main_class.id=test_sub_student.main_id);go班级学生------------------------------2013级1班张三2013级2班李四(2行受影响)1>DELETEFROMtest_m...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

SQL Server 外键约束的例子

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部