как отключить проверку ограничения в postgresql - PullRequest
0 голосов
/ 16 октября 2019

У меня есть таблица ниже с проверочным ограничением для столбца зарплаты. Я хочу временно отключить проверку ограничения. Как отключить и включить проверку ограничений?

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 

Я пытался, но он показывает сообщение об ошибке. Можно ли отключить и включить ограничения хека?

Ответы [ 2 ]

2 голосов
/ 16 октября 2019

Можно ли отключить и включить проверочные ограничения?

Нет, это невозможно. Вам нужно удалить и заново создать его.

Использование:

ALTER TABLE Employee_Salary_Details DROP CONSTRAINT CK_SAL;

Делать свой бизнес, а затем добавить его обратно:

ALTER TABLE Employee_Salary_Details ADD CONSTRAINT CK_SAL CHECK (sal > 3500);
1 голос
/ 16 октября 2019

Есть и другой способ ..

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 * * 1016

...