Küsimus
Anonüümne
(14.11.2024 11:41)
Kuidas kustutada korraga mitu tabeliga seotud kitsendust?
Vastus (14.11.2024 13:13):
See on hea näide, kuidas SQLi dialekt e mägimurrak erineb erinevates andmebaasisüsteemides detailide poolest. Järgnev katsetus tehti keskkondades DB Fiddle, SQL Fiddle ja db<>fiddle.
CREATE TABLE Riik (riik_kood CHAR(3) NOT NULL,
CONSTRAINT pk_riik PRIMARY KEY (riik_kood));
CREATE TABLE Isik(isik_id INTEGER NOT NULL,
pikkus SMALLINT NOT NULL,
kaal SMALLINT NOT NULL,
riik_kood CHAR(3) NOT NULL,
CONSTRAINT pk_isik PRIMARY KEY (isik_id),
CONSTRAINT chk_isik_pikkus CHECK (pikkus>0),
CONSTRAINT chk_isik_kaal CHECK (kaal>0),
CONSTRAINT fk_isik_riik FOREIGN KEY (riik_kood) REFERENCES Riik (riik_kood));
Kustuta tabelist Isik ühe lausega CHECK kitsendused ning välisvõtme kitsendus.
PostgreSQL (17), MySQL (9), Firebird (4), MariaDB (10.9):
ALTER TABLE Isik
DROP CONSTRAINT chk_isik_pikkus,
DROP CONSTRAINT chk_isik_kaal,
DROP CONSTRAINT fk_isik_riik;
--komadega
Oracle (23ai), IBM DB2 (11):
ALTER TABLE Isik
DROP CONSTRAINT chk_isik_pikkus
DROP CONSTRAINT chk_isik_kaal
DROP CONSTRAINT fk_isik_riik;
--komadeta
MS SQL Server (2022):
ALTER TABLE Isik