Fix sql REGEXP check constraints

This commit is contained in:
2023-02-13 19:19:57 +01:00
parent 60cf52ba03
commit 34cb7666ae

View File

@ -6,8 +6,8 @@ CREATE TABLE meta (
);
CREATE TABLE country (
alpha2 TEXT NOT NULL CHECK (alpha2 REGEXP '[A-Z]{2}'),
alpha3 TEXT NOT NULL CHECK (alpha3 REGEXP '[A-Z]{3}'),
alpha2 TEXT NOT NULL CHECK (alpha2 REGEXP '^[A-Z]{2}$'),
alpha3 TEXT NOT NULL CHECK (alpha3 REGEXP '^[A-Z]{3}$'),
num INTEGER NOT NULL CHECK (num >= 0),
name TEXT NOT NULL,
@ -20,7 +20,7 @@ CREATE TABLE country (
) STRICT;
CREATE TABLE currency (
code TEXT NOT NULL CHECK (code REGEXP '[A-Z]{3}'),
code TEXT NOT NULL CHECK (code REGEXP '^[A-Z]{3}$'),
name TEXT NOT NULL,
symbol TEXT,
@ -127,7 +127,7 @@ BEGIN
END;
CREATE TABLE wine_variety (
sortid TEXT NOT NULL CHECK (sortid REGEXP '[A-Z]{2}'),
sortid TEXT NOT NULL CHECK (sortid REGEXP '^[A-Z]{2}$'),
type TEXT NOT NULL CHECK (type IN ('R', 'W')),
name TEXT NOT NULL,
comment TEXT,
@ -136,7 +136,7 @@ CREATE TABLE wine_variety (
) STRICT;
CREATE TABLE wine_quality (
qualid TEXT NOT NULL CHECK (qualid REGEXP '[A-Z]{3}'),
qualid TEXT NOT NULL CHECK (qualid REGEXP '^[A-Z]{3}$'),
origin_level INTEGER NOT NULL,
name TEXT NOT NULL,
@ -147,7 +147,7 @@ CREATE TABLE wine_quality (
) STRICT;
CREATE TABLE wine_origin (
hkid TEXT NOT NULL CHECK (hkid REGEXP '[A-Z]{4}'),
hkid TEXT NOT NULL CHECK (hkid REGEXP '^[A-Z]{4}$'),
parent_hkid TEXT,
name TEXT NOT NULL,
@ -217,14 +217,14 @@ CREATE TABLE wb_rd (
CREATE TABLE branch (
zwstid TEXT NOT NULL CHECK (zwstid REGEXP '[A-Z]'),
zwstid TEXT NOT NULL CHECK (zwstid REGEXP '^[A-Z]$'),
name TEXT NOT NULL,
CONSTRAINT pk_branch PRIMARY KEY (zwstid)
);
CREATE TABLE wine_attribute (
attrid TEXT NOT NULL CHECK (attrid REGEXP '[A-Z]+'),
attrid TEXT NOT NULL CHECK (attrid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
kg_per_ha INTEGER NOT NULL DEFAULT 10000,
@ -233,7 +233,7 @@ CREATE TABLE wine_attribute (
) STRICT;
CREATE TABLE wine_cultivation (
cultid TEXT NOT NULL CHECK (cultid REGEXP '[A-Z]+'),
cultid TEXT NOT NULL CHECK (cultid REGEXP '^[A-Z]+$'),
name TEXT NOT NULL,
CONSTRAINT pk_wine_cultivation PRIMARY KEY (cultid)
@ -249,31 +249,31 @@ CREATE TABLE member (
family_name TEXT NOT NULL,
suffix TEXT DEFAULT NULL,
birthday TEXT CHECK (birthday REGEXP '[1-9][0-9]{3}(-(0[1-9]|1[012])(-(0[1-9]|[12][0-9]|3[01]))?)?') DEFAULT NULL,
entry_date TEXT NOT NULL CHECK (entry_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])') DEFAULT CURRENT_DATE,
exit_date TEXT CHECK (exit_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])') DEFAULT NULL,
birthday TEXT CHECK (birthday REGEXP '^[1-9][0-9]{3}(-(0[1-9]|1[012])(-(0[1-9]|[12][0-9]|3[01]))?)?$') DEFAULT NULL,
entry_date TEXT NOT NULL CHECK (entry_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
exit_date TEXT CHECK (exit_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT NULL,
business_shares INTEGER NOT NULL DEFAULT 0,
accounting_nr TEXT DEFAULT NULL,
zwstid TEXT NOT NULL,
betriebsnr TEXT DEFAULT NULL,
ustid TEXT CHECK (ustid REGEXP '[A-Z]{2}[A-Z0-9]{2,12}') DEFAULT NULL,
ustid TEXT CHECK (ustid REGEXP '^[A-Z]{2}[A-Z0-9]{2,12}$') DEFAULT NULL,
volllieferant INTEGER NOT NULL CHECK (volllieferant IN (FALSE, TRUE)) DEFAULT FALSE,
buchführend INTEGER NOT NULL CHECK (buchführend IN (FALSE, TRUE)) DEFAULT FALSE,
funktionär INTEGER NOT NULL CHECK (funktionär IN (FALSE, TRUE)) DEFAULT FALSE,
active INTEGER NOT NULL CHECK (active IN (FALSE, TRUE)) DEFAULT TRUE,
iban TEXT CHECK (iban REGEXP '[A-Z]{2}[0-9]{2}[A-Z0-9]{8,30}') DEFAULT NULL,
bic TEXT CHECK (bic REGEXP '[A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}[A-Z0-9]{3}?') DEFAULT NULL,
iban TEXT CHECK (iban REGEXP '^[A-Z]{2}[0-9]{2}[A-Z0-9]{8,30}$') DEFAULT NULL,
bic TEXT CHECK (bic REGEXP '^[A-Z0-9]{4}[A-Z]{2}[A-Z0-9]{2}[A-Z0-9]{3}?$') DEFAULT NULL,
country TEXT NOT NULL,
postal_dest TEXT NOT NULL,
address TEXT NOT NULL,
email TEXT CHECK (email REGEXP '[^@]+@([a-z0-9_\x2Däöüß]+\.)[a-z]{2,}') DEFAULT NULL,
phone_landline TEXT CHECK (phone_landline REGEXP '\+[0-9]+') DEFAULT NULL,
phone_mobile TEXT CHECK (phone_mobile REGEXP '\+[0-9]+') DEFAULT NULL,
email TEXT CHECK (email REGEXP '^[^@]+@([a-z0-9_\x2Däöüß]+\.)[a-z]{2,}$') DEFAULT NULL,
phone_landline TEXT CHECK (phone_landline REGEXP '^\+[0-9]+$') DEFAULT NULL,
phone_mobile TEXT CHECK (phone_mobile REGEXP '^\+[0-9]+$') DEFAULT NULL,
default_kgnr INTEGER NOT NULL,
comment TEXT DEFAULT NULL,
@ -326,7 +326,7 @@ CREATE TABLE contract (
CREATE TABLE area_commitment (
vnr INTEGER NOT NULL,
kgnr INTEGER NOT NULL,
gstnr TEXT NOT NULL CHECK (gstnr REGEXP '\.?[1-9][0-9]*(/[1-9][0-9]*)*'),
gstnr TEXT NOT NULL CHECK (gstnr REGEXP '^\.?[1-9][0-9]*(/[1-9][0-9]*)*$'),
rdnr INTEGER,
area INTEGER NOT NULL,
@ -361,8 +361,8 @@ CREATE TABLE season (
year INTEGER NOT NULL CHECK (year >= 1000 AND year <= 9999),
currency TEXT NOT NULL,
start_date TEXT CHECK (start_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])'),
end_date TEXT CHECK (end_date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])'),
start_date TEXT CHECK (start_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'),
end_date TEXT CHECK (end_date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$'),
CONSTRAINT pk_season PRIMARY KEY (year),
CONSTRAINT fk_season_currency FOREIGN KEY (currency) REFERENCES currency (code)
@ -391,8 +391,8 @@ CREATE TABLE delivery (
year INTEGER NOT NULL,
did INTEGER NOT NULL,
date TEXT NOT NULL CHECK (date LIKE year || '-%' AND date REGEXP '[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])') DEFAULT CURRENT_DATE,
time TEXT NOT NULL CHECK (time REGEXP '([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]') DEFAULT CURRENT_TIME,
date TEXT NOT NULL CHECK (date LIKE year || '-%' AND date REGEXP '^[1-9][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$') DEFAULT CURRENT_DATE,
time TEXT NOT NULL CHECK (time REGEXP '^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$') DEFAULT CURRENT_TIME,
zwstid TEXT NOT NULL,
lnr INTEGER NOT NULL CHECK (lnr >= 1 AND lnr <= 999),
lsnr TEXT NOT NULL DEFAULT 'UNSET',