Próbuję zrobić wyzwalacz dla bazy danych sqlite, która reprezentuje szkołę. Mam tabelę o nazwie Administratorzy z tym schematem:Utwórz wyzwalacz dla bazy danych sqlite, która zapobiega wstawianiu
CREATE TABLE Administrators(
ssn INT CHECK(ssn > 100000000),
lName CHAR(20),
fName CHAR(10),
gender CHAR(1) CHECK(gender IN('F','M')),
dob DATE,
address CHAR(100),
phone INT CHECK(phone > 1000000000),
role CHAR(20) CHECK(role IN('Principal','Vice Principal','Dean')),
PRIMARY KEY(ssn)
);
Chcę się upewnić, że istnieje tylko jeden główny. Próbowałem wszystkiego, co mogę wymyślić i ciągle dostaję błędy w różnych lokalizacjach w wyzwalaczu. Ostatni, którego próbowałem, mówi, że jest błąd w pobliżu "JEŻELI"
sqlite> CREATE TRIGGER onePres
...> BEFORE INSERT ON Administrators
...> BEGIN
...> IF (EXISTS (SELECT * FROM Administration WHERE role = 'Principal'))
...> BEGIN
...> ROLLBACK TRANSACTION;
...> RETURN
...> END;
...> END;
Czy ktoś mógłby mi pomóc zrozumieć, co robię źle? Dzięki!
Numery SSN i numery telefonów nie mają wartości numerycznej; użyj ciągów. –