小编K B*_*K B的帖子

为sqlite数据库创建阻止插入的触发器

我正在尝试触发代表学校的sqlite数据库.我有一个名为Administrators的表,具有此模式:

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)
);
Run Code Online (Sandbox Code Playgroud)

我想确保只有一个校长.我已经尝试了所有我能想到的东西,并且在触发器的不同位置不断出现错误.我试过的最后一个说"IF"附近有一个错误

sqlite> CREATE TRIGGER onePres
   ...> BEFORE INSERT ON Administrators
   ...> BEGIN
   ...> IF (EXISTS (SELECT * FROM Administration WHERE role = 'Principal'))
   ...> BEGIN
   ...> ROLLBACK TRANSACTION;
   ...> RETURN
   ...> END;
   ...> END;
Run Code Online (Sandbox Code Playgroud)

有谁能帮我弄清楚我做错了什么?谢谢!

sql database sqlite triggers

14
推荐指数
1
解决办法
8151
查看次数

标签 统计

database ×1

sql ×1

sqlite ×1

triggers ×1