在学习数据库的过程中提到了使用CASCADE关键字来强制删除已被引用的关系(及其引用方)。
在实践过程中,使用SQL Server执行“ DROP TABLE Course CASCADE”却被提示有语法错误。
事实上报错的原因在于SQL Server不支持在删除过程中使用CASCADE关键字(见课本下图):
可看出SQL Server在删除表时并不区分RESTRICT或是CASCADE。
既然不支持,那为何又能识别CASCADE为关键字呢?
事实上在SQL Server中CASCADE关键字用于在建表操作时预先建立级联关系(通常和DENY关键字配合使用,所以报有语法错),建表后执行DROP操作时就不需要用户再指定删除模式了。
因此标题的那句“CASCADE”完全是用错了地方,应予以删除。
若因外键问题报错则应先将引用方删除或创建前使用CASCADE关键字确立级联关系。