ITPUB论坛 » Sybase管理与开发 » sql语句怎么删除相关联表
报名申请微软有影响力专家
2008-7-11 16:50 orange_82
sql语句怎么删除相关联表

两个表想关联,先删一个表,会提示和另一个表存在关联关系而删不掉,怎么无条件的删除该表呢?
在oracle中可以使用cascade constraints
在sybase中怎么删呢?

2008-7-14 09:42 jarjar
貌似只能手动的先删除外键表,再删主键表。

2008-7-15 19:55 catan
[quote]原帖由 [i]jarjar[/i] 于 2008-7-14 09:42 发表 [url=http://www.itpub.net/redirect.php?goto=findpost&pid=10939805&ptid=1020357][img]http://www.itpub.net/images/common/back.gif[/img][/url]
貌似只能手动的先删除外键表,再删主键表。 [/quote]
:p
貌似用的很精准

2008-7-30 05:03 taozhao
我的解决方法

的确,因为Sybase不支持cascade delete. 对于有foreign key 的子母表,即使在母表中写个delete trigger也不行,因为删除母表先碰到foreign key violation,trigger不能被启动。

有两种解决方法
1。 写个stored procedure  DeleteMyparentTable(),  在其中先delete子表,然后再delete母表, 唯一不方便的是,程序员必须记着调用这个stored procedure而不能直接Delete myParentTable.
2.   drop掉foreign key, 在母表上创建delete, insert 和update trigger, 同时在子表上也创建insert 和update trigger。 由 trigger来完成原来foreign key的功能。
    母表中delete trigger负责删除子表纪录

[[i] 本帖最后由 taozhao 于 2008-7-30 05:04 编辑 [/i]]

页: [1]


Powered by ITPUB论坛