获取有关删除操作的外键信息

时间:2015-05-25 11:27:54

标签: sql foreign-keys constraints sybase sybase-ase

我有一个带有两个表的Sybase数据库。 一个表用外键表示另一个表。 我需要知道 - 这个外国是否有任何on cascade选项声明?

我已经尝试过: EXEC sp_helpconstraint <table_with_constraint> 但这并不会返回任何on cascade信息。有没有办法从Sybase获取此信息而不创建虚假记录并删除它们? sysconstraints表也没有保留有关级联操作的信息。我错过了什么?

服务器版本为:ASE 15.x

2 个答案:

答案 0 :(得分:3)

Sybase ASE 15不支持级联DDL,因此没有任何外键具有级联选项。 如果要删除或更新级联功能,则必须实现触发器。

答案 1 :(得分:0)

如果您想知道外键是否具有级联属性,可以使用以下选择:

  select (select user_name||'.'||table_name from sys.SYSTABLE a join sys.sysuserperms u on(a.creator = u.user_id) where a.table_id = SYSFOREIGNKEY.primary_table_id) primary_table,
           (select user_name||'.'||table_name from sys.SYSTABLE a join sys.sysuserperms u on(a.creator = u.user_id) where a.table_id = SYSFOREIGNKEY.foreign_table_id) foreign_table,
           SYSFOREIGNKEY."role" as fk_name,
           SYSTRIGGER.trigger_defn 
      from sys.SYSFOREIGNKEY key
      join sys.SYSTRIGGER key 
      join sys.systable 
      join sys.sysuserperms u on(systable.creator = u.user_id)
    where u.user_name in('dba')
    --  and SYSTRIGGER.foreign_table_id= 8141 
      --and SYSTRIGGER.foreign_key_id = 1