Gibt es etwas, was eine Einschränkungsdeklaration auf Tabellenebene tun kann, was eine auf Spaltenebene nicht kann?

7

Hatte heute eine Prüfung. Eine Frage störte mich:

Was kann eine Einschränkung auf Tabellenebene tun, was eine Einschränkung auf Spaltenebene nicht kann?

Meine Antwort war, dass nur eine Einschränkungsdeklaration auf Tabellenebene das Einrichten eines zusammengesetzten Primärschlüssels ermöglicht. Ich denke, das ist nicht der einzige Unterschied. Wie hätte ich das ergänzen können?

Stéphane Bruckert
quelle

Antworten:

14

Sie haben andere Arten von Einschränkungen als den Primärschlüssel vergessen (gilt auch für eindeutige, überprüfte und Fremdschlüsseleinschränkungen), aber das ist es im Grunde.

Eine Einschränkung auf Spaltenebene kann nur auf die Spalte verweisen, neben der sie deklariert ist. Eine Einschränkung auf Tabellenebene kann auf mehrere Spalten verweisen.

Martin Smith
quelle
Hm, das ist die SQL Server-Implementierung, oder? Postgres erlaubt create table a (t int not null, u int not null check (u > t+v), v int null );zum Beispiel. Keine Ahnung, was der Standard sagt.
Ypercubeᵀᴹ
@ ypercubeᵀᴹ - yep, für SQL Server. Ich habe auch keine Ahnung, was der Standard sagt (oder wie andere DBMS dies ansprechen)
Martin Smith