如何在postgresql中禁用检查约束
how to disable check constraint in postgresql
我有以下 table 薪水列的检查约束。我想暂时禁用检查约束。如何禁用和启用检查约束?
CREATE TABLE "Employee_Salary_Details"(
empno int,
ename varchar(100),
sal numeric CONSTRAINT CK_SAL CHECK(sal>3500)
)
INSERT INTO "Employee_Salary_Details" VALUES(101,'RAM',200);
ALTER TABLE "Employee_Salary_Details" DISABLE CONSTRAINT CK_SAL
我试过了,但显示错误消息。是否可以禁用和启用 heck 约束?
Is it possible to disable and enable check constraints?
不,那不可能。您需要删除并重新创建它。
使用:
ALTER TABLE Employee_Salary_Details DROP CONSTRAINT CK_SAL;
做你的事,然后加回去:
ALTER TABLE Employee_Salary_Details ADD CONSTRAINT CK_SAL CHECK (sal > 3500);
还有另一种方法..
SELECT consrc,con.*
FROM pg_catalog.pg_constraint con
INNER JOIN pg_catalog.pg_class rel
ON rel.oid = con.conrelid
INNER JOIN pg_catalog.pg_namespace nsp
ON nsp.oid = connamespace
WHERE nsp.nspname = 'public' and contype='c'
尝试在此查询结果中找到您的约束条件..
然后将该条目的“conrelid”更新为 0。
这将禁用该约束。
希望这能奏效..
在你的插入工作完成后.. 为'conrelid'
恢复相同的值
我有以下 table 薪水列的检查约束。我想暂时禁用检查约束。如何禁用和启用检查约束?
CREATE TABLE "Employee_Salary_Details"(
empno int,
ename varchar(100),
sal numeric CONSTRAINT CK_SAL CHECK(sal>3500)
)
INSERT INTO "Employee_Salary_Details" VALUES(101,'RAM',200);
ALTER TABLE "Employee_Salary_Details" DISABLE CONSTRAINT CK_SAL
我试过了,但显示错误消息。是否可以禁用和启用 heck 约束?
Is it possible to disable and enable check constraints?
不,那不可能。您需要删除并重新创建它。
使用:
ALTER TABLE Employee_Salary_Details DROP CONSTRAINT CK_SAL;
做你的事,然后加回去:
ALTER TABLE Employee_Salary_Details ADD CONSTRAINT CK_SAL CHECK (sal > 3500);
还有另一种方法..
SELECT consrc,con.*
FROM pg_catalog.pg_constraint con
INNER JOIN pg_catalog.pg_class rel
ON rel.oid = con.conrelid
INNER JOIN pg_catalog.pg_namespace nsp
ON nsp.oid = connamespace
WHERE nsp.nspname = 'public' and contype='c'
尝试在此查询结果中找到您的约束条件.. 然后将该条目的“conrelid”更新为 0。
这将禁用该约束。
希望这能奏效..
在你的插入工作完成后.. 为'conrelid'
恢复相同的值