有没有办法在db2 v7中启用/禁用约束?

use*_*017 5 database db2 constraints

我必须将表从Oracle数据库复制到db2 v7,并且为了做到这一点(避免数百万次丢弃和创建)我想知道db2是否具有像Oracle这样的功能来临时启用/禁用约束而不会丢失他们.

提前谢谢,毛罗.

bri*_*gge 5

你可以做:

ALTER TABLE <table-name> ALTER FOREIGN KEY <constraint-name> NOT ENFORCED
Run Code Online (Sandbox Code Playgroud)

然后重新启用:

ALTER TABLE <table-name> ALTER FOREIGN KEY <constraint-name> ENFORCED
Run Code Online (Sandbox Code Playgroud)

http://publib.boulder.ibm.com/infocenter/mptoolic/v1r0/index.jsp?topic=/com.ibm.db2tools.ama.doc.ug/amacric0.htm


Chr*_*ein 1

我不确定这是否适用于版本 7,但您可以尝试以下操作:

set integrity for table_name off
set integrity for table_name foreign key immediate unchecked
Run Code Online (Sandbox Code Playgroud)

然后你就可以进行插入了。要重新启用,您可以执行以下操作:

set integrity for table_name immediate checked
Run Code Online (Sandbox Code Playgroud)

  • 这实际上并没有禁用约束。第一行禁用它们,但将表置于“检查挂起状态”,这基本上意味着您无法对其执行大多数操作。第二行再次启用约束,因此它执行与第三行相同的操作。唯一的区别在于“已检查”/“未检查”一词,这意味着是否应在重新打开约束后立即检查约束是否存在违规情况。 (3认同)