Hallo zusammen,
ich hab eine Frage zu SQL Referentielle Integrität mit on Delete set Null und on Update cascade.
Bezieht sich das ganze nur auf die Relation in der dieses Definiert wurde?
Hier mal ein Beispiel:
Sagen wir mal die Tabellen sind so gefühlt:
Produkt
Verkäufer:
Nun folgende DML Statements:
Wenn man nun ein SQL Abfrage abgibt um Preise zu ermitteln so:
Was würde dann raus kommen?
Meines Verständnis würde ich die N1 Spalten in Verkäufe mit NULL füllen das bedeutet diese würden definitiv bei dem SQL Statement aufsummiert werden.
Doch wie ist das mit denn N3 Produkten? Was ja echt ärgerlich wäre, wäre wenn die so in der Datenbank stehen bleiben würden. Das wären ja Referenzen auf nichts mehr oder =D Da N3 in Produkte nicht mehr existiert diese Spalte heißt ja nun N4. Wird also bei Verkäufe das ganze auch umbenannt?
Kann mir das jemand irgendwie erklären?
ich hab eine Frage zu SQL Referentielle Integrität mit on Delete set Null und on Update cascade.
Bezieht sich das ganze nur auf die Relation in der dieses Definiert wurde?
Hier mal ein Beispiel:
SQL:
create table Produkt (
name varchar(20) Primary Key,
herkunft varchar(120)
);
create table Verkäufer (
Stand varchar(20),
Produkt varchar(20),
Preis numeric (5,2),
Foreign Key (Produkt) REFERENCES Produkt(name)
on Delete set Null
on Update Cascade
);
Sagen wir mal die Tabellen sind so gefühlt:
Produkt
Name | Herkunft |
N1 | O1 |
N2 | O2 |
N3 | O3 |
Verkäufer:
Stand | Produkt | Preis |
Stand1 | N1 | 2 |
Stand1 | N1 | 1 |
Stand1 | N2 | 3 |
Stand2 | N3 | 4 |
Stand3 | N3 | 6 |
Stand3 | N1 | 4 |
Nun folgende DML Statements:
SQL:
Delete From Produkt Where Name = 'N1';
Update Produkt set Name = 'N4' where name ='N3';
Wenn man nun ein SQL Abfrage abgibt um Preise zu ermitteln so:
SQL:
select sum(preis) from verkäufer where verkäufer.produkt is null or verkäufer.produkt = 'N3';
Was würde dann raus kommen?
Meines Verständnis würde ich die N1 Spalten in Verkäufe mit NULL füllen das bedeutet diese würden definitiv bei dem SQL Statement aufsummiert werden.
Doch wie ist das mit denn N3 Produkten? Was ja echt ärgerlich wäre, wäre wenn die so in der Datenbank stehen bleiben würden. Das wären ja Referenzen auf nichts mehr oder =D Da N3 in Produkte nicht mehr existiert diese Spalte heißt ja nun N4. Wird also bei Verkäufe das ganze auch umbenannt?
Kann mir das jemand irgendwie erklären?