触发器CREATE TABLE yuangong ( ygno VARCHAR(20) NOT NULL PRIMARY KEY, yename VARCHAR(20) NOT NULL, ygpos VARCHAR(20) NOT NULL, ygsex VARCHAR(20) NOT NULL, ygage INT NOT NULL, ygtel VARCHAR(20) NOT NULL, CHECK (ygsex IN ('男', '女')), CHECK (ygage > 18 AND ygage < 65), CHECK (ygpos IN ('经理', '主管', '快递员'))); INSERT INTO yuangong VALUES ('20001', '诸一', '经理', '男', 50, '88228801');INSERT INTO yuangong VALUES ('20002', '伟二', '主管', '男', 48, '88228802');INSERT INTO yuangong VALUES ('20003', '蒋三', '主管', '男', 46, '88228803');INSERT INTO yuangong VALUES ('20004', '沈四', '主管', '女', 39, '88228804');INSERT INTO yuangong VALUES ('20005', '韩五', '快递员', '男', 30, '88228805');INSERT INTO yuangong VALUES ('20006', '杨六', '快递员', '男', 32, '88228806');INSERT INTO yuangong VALUES ('20007', '朱七', '快递员', '男', 31, '88228807');INSERT INTO yuangong VALUES ('20008', '秦八', '快递员', '男', 31, '88228808');INSERT INTO yuangong VALUES ('20009', '许九', '快递员', '男', 31, '88228809');INSERT INTO yuangong VALUES ('20010', '龚十', '快递员', '男', 31, '88228810');
时间: 2023-08-20 18:34:58 浏览: 149
好的,您提供的是一个员工表(yuangong),包含员工号(ygno)、姓名(yename)、职位(ygpos)、性别(ygsex)、年龄(ygage)和电话(ygtel)等字段。同时,在表定义中还定义了三个CHECK约束,用于限制员工的性别、年龄和职位等数据的合法性。
接下来,您向员工表中插入了10条员工记录,并且每条记录都符合CHECK约束的限制条件。这些员工记录包括一位经理、三位主管和六位快递员。
如果您想要在员工表中增加一个触发器,用于在插入新的员工记录时自动计算员工的工资(假设工资计算是根据员工的职位和工作年限等因素进行的),那么可以使用如下的CREATE TRIGGER语句:
```
CREATE TRIGGER calc_salary
AFTER INSERT ON yuangong
FOR EACH ROW
BEGIN
DECLARE salary INT;
IF NEW.ygpos = '经理' THEN
SET salary = 10000 + NEW.ygage * 500;
ELSEIF NEW.ygpos = '主管' THEN
SET salary = 8000 + NEW.ygage * 300;
ELSE
SET salary = 5000 + NEW.ygage * 200;
END IF;
UPDATE yuangong SET ygsalary = salary WHERE ygno = NEW.ygno;
END;
```
该触发器被命名为calc_salary,它在每次向yuangong表中插入新的记录时自动触发。对于每条新记录,触发器会根据员工的职位和工作年限等因素计算出员工的工资,并将工资信息更新到yuangong表中对应员工记录的ygsalary字段中。
当您向yuangong表中插入新的员工记录时,触发器会自动计算员工的工资并将结果更新到ygsalary字段中。例如,如果您执行以下SQL语句:
```
INSERT INTO yuangong VALUES ('20011', '张十一', '快递员', '女', 25, '88228811');
```
那么触发器会自动计算张十一的工资,并将结果更新到yuangong表中对应记录的ygsalary字段中。
阅读全文