sql server修改已经创建表的外键属性
1.使用SSMS数据库管理工具修改FOREIGN KEY约束
1.点击所要改变的表的左边的+号,再点击键旁边的+号,展开如图:
2.右键要修改的外键–点击编写键脚本为(S)–点击DROP和CREATE到(R)–点击新查询编辑器窗口,弹出如图:
3.完成上述步骤后会有新编辑器窗口弹出,在如图下位置加入语句ON DELETE CASCADE ON UPDATE CASCADE,全选,点击运行即可,运行结束后叉掉时可不保存该编辑器内容。
4.完成上述步骤后,再进行删除和更改操作就不会报错啦!
2.使用sql语言修改FOREIGN KEY 约束
1.删除外键
ALTER TABLE SC/*表名*/ DROP CONSTRAINT FK__SC__Sno__440B1D61/*外键名*/;
选中该代码块并运行即可,不知道外键名的可以在左侧查看:
2.新建外键
注意建立外键时,参照表的参照列与被参照表的被参照列数据类型要相同;
use TEST1 /*数据库名称*/
go
alter table SC/*要增加外键的表*/
add constraint FK_SC_SNO /*约束的名称*/
foreign key (Sno)/*要添加外键约束的列*/ references S(Sno) on delete cascade on update cascade/*指定参照表的参照列 *//*加上了on update cascade on delete cascade 语句*/
go
此时,再进行删除和更改操作,就不会再报错啦!
3.复制表数据,重新建表完善FOREIGN KEY约束
该方法比较冗杂且存在一定的弊端,但是也可采取,对基本的操作不构成影响。
1.创建一个与该表结构相同的表,但是增加了on delete cascade on update cascade 语句;例如:
2.将原表数据复制到新表中
INSERT INTO
SSC/*新表名称*/
SELECT *
FROM SC;/*原表名称*//*复制表数据,假设两表结构相同*/
3.删除原表
直接在左侧右键删除即可;
4.将新表名改为原表名
EXEC sp_rename 'SSC','SC'/*修改表名,将SSC改为SC*/
会弹出此消息,故一般不建议改表名