Kuidas kustutada korraga mitu tabeliga seotud kitsendust?

Postitas Erki Eessaar 14.11.2024 11:52 (muudeti 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
DROP CONSTRAINT chk_isik_pikkus, chk_isik_kaal, fk_isik_riik;

MS Access (365):
ALTER TABLE Isik DROP CONSTRAINT chk_isik_pikkus;
ALTER TABLE Isik DROP CONSTRAINT chk_isik_kaal;
ALTER TABLE Isik DROP CONSTRAINT fk_isik_riik;
--eraldi laused


LibreOffice Base (HSQLDB), SQLite (3.39):
Kitsendusi saab defineerida, kuid ALTER TABLE lausega kustutada ei saa.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!