【发布时间】:2014-08-11 07:55:32
【问题描述】:
我需要一个在 DB2 数据库中关闭/打开外键检查的 SQL 语句。
到目前为止,我发现的只是:SET INTEGRITY FOR <your_table> OFF,但这只会关闭一个特定表的约束。我可以遍历模式中的所有表并调用该命令,但这不是很有效。这在 DB2 中是否可行?
【问题讨论】:
标签: sql foreign-keys db2
我需要一个在 DB2 数据库中关闭/打开外键检查的 SQL 语句。
到目前为止,我发现的只是:SET INTEGRITY FOR <your_table> OFF,但这只会关闭一个特定表的约束。我可以遍历模式中的所有表并调用该命令,但这不是很有效。这在 DB2 中是否可行?
【问题讨论】:
标签: sql foreign-keys db2
您可以为所有表生成动态查询
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 命令不输出行数 * 必须在每个生成的查询末尾删除空格