8 FOR r IN SELECT t.table_schema AS sname,
10 t.column_name AS colname,
12 FROM information_schema.referential_constraints ref
13 JOIN information_schema.key_column_usage t USING (constraint_schema,constraint_name)
14 WHERE ref.unique_constraint_schema = 'asset'
15 AND ref.unique_constraint_name = 'copy_pkey'
18 EXECUTE 'ALTER TABLE '||r.sname||'.'||r.tname||' DROP CONSTRAINT '||r.constraint_name||';';
21 CREATE OR REPLACE FUNCTION evergreen.'||r.sname||'_'||r.tname||'_'||r.colname||'_inh_fkey() RETURNS TRIGGER AS $f$
23 PERFORM 1 FROM asset.copy WHERE id = NEW.'||r.colname||';
25 RAISE foreign_key_violation USING MESSAGE = FORMAT(
26 $$Referenced asset.copy id not found, '||r.colname||':%s$$, NEW.'||r.colname||'
31 $f$ LANGUAGE PLPGSQL VOLATILE COST 50;
35 CREATE CONSTRAINT TRIGGER inherit_'||r.constraint_name||'
36 AFTER UPDATE OR INSERT OR DELETE ON '||r.sname||'.'||r.tname||'
37 DEFERRABLE FOR EACH ROW EXECUTE PROCEDURE evergreen.'||r.sname||'_'||r.tname||'_'||r.colname||'_inh_fkey();