One row only

Im Laufe der Zeit sammeln sich in einer Datenbank-Anwendung immer auch Utility-Funktionen und -Tabellen an. Eine davon, die ich immer wieder hilfreich finde: eine Tabelle, die genau einen Datensatz beinhaltet. Dabei muss sichergestellt werden, dass Nutzer diesen nicht löschen können und auch keine weiteren Datensätze anlegen können.

CREATE TABLE one_row_only (
    one_row_only INTEGER NOT NULL DEFAULT 1 CHECK ( one_row_only = 1 ) PRIMARY KEY,
    started_at TIMESTAMP NOT NULL
);

CREATE TRIGGER tdb_one_row_only BEFORE DELETE ON one_row_only
FOR EACH ROW
BEGIN
    ROLLBACK TRIGGER WITH RAISERROR 99999 'Do not attempt to delete from one_row_only';
END;

INSERT INTO one_row_only VALUES ( DEFAULT, CURRENT TIMESTAMP );
COMMIT;

Mehr dazu auf Technotes.

#SQL #DDL