【问题标题】:Turn on/off foreign key check for ALL tables in DB2打开/关闭 DB2 中所有表的外键检查
【发布时间】:2014-08-11 07:55:32
【问题描述】:

我需要一个在 DB2 数据库中关闭/打开外键检查的 SQL 语句。

到目前为止,我发现的只是:SET INTEGRITY FOR <your_table> OFF,但这只会关闭一个特定表的约束。我可以遍历模式中的所有表并调用该命令,但这不是很有效。这在 DB2 中是否可行?

【问题讨论】:

    标签: sql foreign-keys db2


    【解决方案1】:

    您可以为所有表生成动态查询

    db2 "select 'set integrity for ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ' off;' 
      from syscat.tables
      where tabschema not like 'SYS%'
      and type = 'T'" | db2 +p -t
    

    【讨论】:

    • 谢谢。什么对我有用:db2 -m -x "select 'set integrity for ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ' off;' from syscat.tables where tabschema not like 'SYS%' and type = 'T'" | sed 's/[[:blank:]]*$//' | db2 +p -v * 第一个 db2 命令不输出行数 * 必须在每个生成的查询末尾删除空格
    • 您如何将其恢复原状? OFF 本身可以正常工作,但 ON 会触发异常。文档几乎和具体一样清晰。
    • 没关系,这是一些命令行巫术而不是 SQL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2012-11-06
    • 2016-03-18
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多