用mysql对数据库salarydb的userlist表创建触发器。
时间: 2024-03-25 08:39:44 浏览: 17
好的,以下是用MySQL对数据库salarydb的userlist表创建触发器的SQL语句:
```
CREATE TRIGGER `userlist_delete` BEFORE DELETE ON `userlist`
FOR EACH ROW BEGIN
DECLARE user_type VARCHAR(20);
DECLARE user_id INT;
SELECT type, id INTO user_type, user_id FROM userlist WHERE id = OLD.id;
IF user_type = 'admin' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete admin user';
END IF;
END;
```
这个触发器的作用是在userlist表中删除数据之前,检查要删除的用户是否为管理员,如果是,则阻止删除并返回错误信息。这个触发器可以保证管理员用户不会被删除。
相关问题
用mysql对数据库salarydb的salary表创建触发器。
好的,以下是用MySQL对数据库salarydb的salary表创建触发器的SQL语句:
```
CREATE TRIGGER `salary_insert` BEFORE INSERT ON `salary`
FOR EACH ROW BEGIN
DECLARE emp_id INT;
DECLARE emp_salary DECIMAL(10, 2);
SELECT salary INTO emp_salary FROM employee WHERE id = NEW.emp_id;
IF emp_salary < NEW.salary THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Salary cannot be greater than employee base salary';
END IF;
END;
```
这个触发器的作用是在salary表中插入新数据之前,检查新的薪资是否高于员工的基本薪资,如果是,则阻止插入并返回错误信息。这个触发器可以保证员工的薪资不会高于其基本薪资。
用mysql对数据库salarydb的apartment表创建触发器。
好的,以下是用MySQL对数据库salarydb的apartment表创建触发器的SQL语句:
```
CREATE TRIGGER `apartment_update` BEFORE UPDATE ON `apartment`
FOR EACH ROW BEGIN
IF NEW.rent < OLD.rent THEN
SET NEW.rent = OLD.rent;
END IF;
END;
```
这个触发器的作用是在apartment表中的rent字段被更新之前,检查新的租金是否低于旧的租金,如果是,则将新的租金设为旧的租金。这个触发器可以保证公寓的租金不会降低。