Обсуждение: Constraints/Triggers information?
I've got a snipped script like thus:
---------------------------------------------------
alter table license drop constraint fk_lic_lc restrict ;
drop table license ;
create table license (
id numeric(18),
. . .
) ;
alter table license add constraint fk_lic_lc
foreign key (license_code_id) references license_code (id) ;
---------------------------------------------------
Where the final statement had previously run successfully:
---------------------------------------------------
psql:file.sql:284: NOTICE:
ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
---------------------------------------------------
The initial statement (alter table drop constraint) always fails with
---------------------------------------------------
psql:file.sql:22: ERROR: ALTER TABLE / DROP CONSTRAINT:
fk_lic_lc does not exist
---------------------------------------------------
I can find nothing in psql's "\?" that talks about either triggers or
referential integrity constraints. Doing a "\d license" shows me several
RI entries like thus:
---------------------------------------------------
Triggers: RI_ConstraintTrigger_5602314,
RI_ConstraintTrigger_5602320,
RI_ConstraintTrigger_5602326
---------------------------------------------------
But I can't get any information on the RI_ entries. What's wrong with me?
Do I need to RTFM? If so, which FM do I need to R?
--
Tim Ellis
DBA, Gamet
ps -- doing drop constraint with cascade keyword gives me:
---------------------------------------------------
psql:file.sql:22: ERROR: ALTER TABLE / DROP CONSTRAINT
does not support the CASCADE keyword
---------------------------------------------------
On Thu, 27 Jun 2002, Tim Ellis wrote: > --------------------------------------------------- > alter table license drop constraint fk_lic_lc restrict ; > drop table license ; > create table license ( > id numeric(18), > . . . > ) ; > alter table license add constraint fk_lic_lc > foreign key (license_code_id) references license_code (id) ; > --------------------------------------------------- > > Where the final statement had previously run successfully: > > --------------------------------------------------- > psql:file.sql:284: NOTICE: > ALTER TABLE will create implicit trigger(s) for FOREIGN KEY check(s) > --------------------------------------------------- > > The initial statement (alter table drop constraint) always fails with > > --------------------------------------------------- > psql:file.sql:22: ERROR: ALTER TABLE / DROP CONSTRAINT: > fk_lic_lc does not exist Current PostgreSQL's drop constraint only works on check constraints. To drop foreign keys, you have to do, drop trigger "<triggername>" on <table> for the three triggers it creates (2 on the pk table, 1 on the fk table). > But I can't get any information on the RI_ entries. What's wrong with me? > Do I need to RTFM? If so, which FM do I need to R? Pretty much the most useful info on the triggers can be found on techdocs.postgresql.org. There are a couple of essays on them.