Обсуждение: ALTER TABLE
Hello!
Can someone explain me, why last ALTER fails?
work=# \d rdu
Table "rdu"
Column | Type | Modifiers
-------------+-----------------------------+------------------------------------------------
id | integer | not null default
nextval('"rdu_id_seq"'::text)
numurs | integer |
versija | integer |
klients_id | integer |
pasutitajs | text |
agents_id | integer |
pasut_nr | integer |
status_id | character varying(1) | default 'S'
start_time | timestamp without time zone | not null default now()
end_time | timestamp without time zone |
finish_time | timestamp without time zone |
apraksts | text |
Indexes: rdu_agents_id,
rdu_klients_id
Unique keys: rdu_id_key
Triggers: RI_ConstraintTrigger_1187649,
RI_ConstraintTrigger_1187655,
RI_ConstraintTrigger_1187673,
RI_ConstraintTrigger_1187675
work=# ALTER TABLE rdu ADD CONSTRAINT rdu_end_time CHECK ((start_time <=
end_time) OR end_time IS NULL);
ALTER
work=# ALTER TABLE rdu ADD CONSTRAINT rdu_finish_time CHECK ((start_time <=
finish_time) OR finish_time IS NULL);
ERROR: AlterTableAddConstraint: rejected due to CHECK constraint
rdu_finish_time
psql (PostgreSQL) 7.2.3
Mark
> work=# ALTER TABLE rdu ADD CONSTRAINT rdu_finish_time CHECK ((start_time <= > finish_time) OR finish_time IS NULL); > ERROR: AlterTableAddConstraint: rejected due to CHECK constraint > rdu_finish_time I can say that the field, finish_time have the values which conflict with the check constraint you define. ie.. Records exist with start_time > finish_time, so update the records and try. regards, bhuvaneswaran
* Martins Zarins <mark@vestnesis.lv> [05.06.2003 10:18]:
> Hello!
> Can someone explain me, why last ALTER fails?
>
> work=# \d rdu
> Table "rdu"
> Column | Type | Modifiers
> -------------+-----------------------------+------------------------------------------------
> id | integer | not null default
> nextval('"rdu_id_seq"'::text)
> numurs | integer |
> versija | integer |
> klients_id | integer |
> pasutitajs | text |
> agents_id | integer |
> pasut_nr | integer |
> status_id | character varying(1) | default 'S'
> start_time | timestamp without time zone | not null default now()
> end_time | timestamp without time zone |
> finish_time | timestamp without time zone |
> apraksts | text |
> Indexes: rdu_agents_id,
> rdu_klients_id
> Unique keys: rdu_id_key
> Triggers: RI_ConstraintTrigger_1187649,
> RI_ConstraintTrigger_1187655,
> RI_ConstraintTrigger_1187673,
> RI_ConstraintTrigger_1187675
>
> work=# ALTER TABLE rdu ADD CONSTRAINT rdu_end_time CHECK ((start_time <=
> end_time) OR end_time IS NULL);
> ALTER
> work=# ALTER TABLE rdu ADD CONSTRAINT rdu_finish_time CHECK ((start_time <=
> finish_time) OR finish_time IS NULL);
> ERROR: AlterTableAddConstraint: rejected due to CHECK constraint
> rdu_finish_time
Perhaps you have some rows, for which check fails,
i.e. (start_time > finish_time AND finish_time IS NOT NULL) is true.
--
Victor Yegorov