【问题标题】:Get info about foreign key on delete action获取有关删除操作的外键信息
【发布时间】:2015-05-25 11:27:54
【问题描述】:

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

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

服务器版本为:ASE 15.x

【问题讨论】:

  • 你有哪个版本的 ASE?

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

      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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多