依赖性跟踪

如果你创建了一个包含许多表,并且带有约束、视图、触发器、函数等复杂的数据库结构。那么你就会在对象之间隐含地创建了一个依赖性的网络。

为了保证整个数据库结构的完整性,OushuDB 保证你无法删除那些还被其它对象依赖的对象。如果你不想麻烦的分别删除所有依赖对象,你可以运行:

DROP TABLE products CASCADE;

然后所有被依赖的对象都将被删除。如果你想检查DROP … CASCADE会干什么,运行不带CASCADE 的DROP然后阅读NOTICE消息。

OushuDB里的所有删除命令都支持声明CASCADE。当然,具体的依赖性实体取决于对象的类型。你也可以写RESTRICT 而不是CASCADE以获取缺省的行为(防止删除那些其它对象所依赖的对象)。

Note

根据 SQL 标准,要求至少声明RESTRICT或CASCADE中的一个。实际上没有哪种数据库系统强制这一点,但是缺省的行为是RESTRICT 还是CASCADE则因系统而异。