Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
create table a(b integer primary key);
create table b(b integer references a(b) on update cascade);
insert into a(b) values (1);
insert into b(b) values (1);
update a set b = 2;
select * from b;
2
alter table a add constraint in_bereich check (b between 1 and 10);
insert into a values (11);
ERROR: FEHLER: neue Zeile für Relation »a« verletzt Check-Constraint »in_bereich«
zum Beispiel, wann das erfolgen soll. Bein Eintrag in die eine Tabelle, oder später, wenn 50 FDantillionen Einträge existieren?Was ist Unverständlich?
Es soll erfolgen nach Update von dem Feld "Ziel" in der Tabelle Objekt.zum Beispiel, wann das erfolgen soll. Bein Eintrag in die eine Tabelle, oder später, wenn 50 FDantillionen Einträge existieren?
dafür ist ein Foreign-Key daUnd KritID muss mit der entsprechenden ID aus der Krit-Tabelle gefüllt werden.
fangen wir mal einfach an. Der CHECK-Constraint:Beispiele in Bildern sind Murks. Prüfen, ob ein Wert in einem definiertem Interval liegt geht via CHECK-Constraint, beliebige andere Aktionen via TRIGGER.
postgres=# create table t1(id int generated always as identity, value int, low_limit int, max_limit int, check (value between low_limit and max_limit));
CREATE TABLE
postgres=# insert into t1 (value, low_limit, max_limit) values (10,5,15);
INSERT 0 1
postgres=# insert into t1 (value, low_limit, max_limit) values (2,25,35);
ERROR: new row for relation "t1" violates check constraint "t1_check"
DETAIL: Failing row contains (2, 2, 25, 35).
postgres=#
postgres=# create or replace function t1_to_t2() returns trigger as $$begin insert into t2(id, value) values (new.id, new.value); return new; end;$$language plpgsql;
CREATE FUNCTION
postgres=# create trigger trg1 after insert or update on t1 for each row execute procedure t1_to_t2();
CREATE TRIGGER
postgres=# insert into t1 (value, low_limit, max_limit) values (27,25,35);
INSERT 0 1
postgres=# select * from t1;
id | value | low_limit | max_limit
----+-------+-----------+-----------
1 | 10 | 5 | 15
4 | 27 | 25 | 35
(2 rows)
postgres=# select * from t2;
id | value | ts
----+-------+---------------------------
4 | 27 | 2022-08-01 13:21:17.05483
(1 row)
postgres=#