2016-02-10 3 views
-1

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

Вот таблица CREATE запрос в pgadmin3:

CREATE TABLE employee_grade 
(
    id uuid NOT NULL DEFAULT uuid_generate_v4(), 
    graded_to uuid, 
    grade character varying(10), 
    graded_by uuid, 
    grade_date timestamp with time zone, 
    grade_month timestamp with time zone, 
    CONSTRAINT employee_grade_pkey PRIMARY KEY (id), 
    CONSTRAINT employee_grade_by_fk FOREIGN KEY (graded_by) 
     REFERENCES employee (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION, 
    CONSTRAINT employee_grade_to_fk FOREIGN KEY (graded_to) 
     REFERENCES employee (id) MATCH SIMPLE 
     ON UPDATE NO ACTION ON DELETE NO ACTION 
) 

Я не знаю, что такое ограничение было, но я знаю, что он участвует в graded_by и graded_to внешние ключи, и grade_month колонку. Это было также уникально. Вероятно, это означало, что в этом месяце graded_by оценил graded_to, и не должно быть двух градаций в том же месяце для тех же двух сотрудников.

Кроме того, если это помогает, соответствующий объект Java не имеет соответствующего столбца gradeMonth.

+0

В будущем сделайте резервную копию с помощью 'pg_dump' и запустите опасные команды внутри транзакции. –

+0

@ DanielLyons Хорошо. Спасибо. – cst1992

+0

@a_horse_with_no_name Исправлено, спасибо. – cst1992

ответ

0

Оказывается, ответ действительно был простой UNIQUE ограничение:

CONSTRAINT grade_month_uniq UNIQUE (graded_to, graded_by, grade_month) 

Я использовал это, и это прекрасно работает по прямому назначению.

Спасибо @NickBarnes.

Смежные вопросы