Could not drop object 'student' because it is referenced by a FOREIGN KEY constraint,constraint
1. Find foreign keys
SELECT * FROM sys.foreign_keys WHERE referenced_object_id = object_id('Student')
2. Delete foreign keys
SELECT 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(parent_object_id) + '.[' + OBJECT_NAME(parent_object_id) + '] DROP CONSTRAINT ' + nameFROM sys.foreign_keysWHERE referenced_object_id = object_id('Student')
nocheck选项只对插入、更新记录有用,对truncate没有用,而且你禁用MRB_OrdersHeaders的外键是没用的,不能truncate的主要原因是MRB_OrdersHeaders表被其它表的外键引用了。
如果业务允许,把引用了MRB_OrdersHeaders表的其它表的相应外键都删掉。
如果需要保留那些外键,则把相应表里存在的记录都删除就行了。
比如MRB_OrdersHeaders表被A表引用,那么就先删除A表中的记录。因为可能涉及级联引用的问题,需要一级级的删除。
删除之后也是不能truncate的,只能delete
这条语句是在判断是否有 STUDENT 这张表,如果有的话就删除!OBJECT_ID() 其实是一个系统函数用于返回对象标识号,因为在SQL-Server 中 在一个数据库中不存在相同的表名,而且每个表名都进行了ID标识 ,所以可以用这个函数来判断是否有某个对象的存在。