MySQL设置编号自增(auto 您所在的位置:网站首页 数据库中自动增长 MySQL设置编号自增(auto

MySQL设置编号自增(auto

2024-07-09 15:07| 来源: 网络整理| 查看: 265

auto_increment 的作用

在数据库中,我们往往会遇见插入记录时要设置记录 id 自增的问题,那么我们如何做到呢? 其实 auto_increment 就可以做到啦!!!

使用方法 首先它是创表时用到的用于主键的自增(默认基值为1,递增数1)

关于语句的话(当然只是一部分啦!!)

id INT auto_increment PRIMARY KEY, 敲重点!实战来啦

创建员工employee表、部门变动历史dept_history表,工资变动历史sal_history表

创建emp库 CREATE DATABASE emp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创建employee表 USE emp; CREATE TABLE employee ( empid VARCHAR(5) PRIMARY KEY, -- 员工编号 empname VARCHAR(10), -- 员工姓名 dept VARCHAR(15), -- 所在部门 salary INT, -- 工资 uptime DATE, -- 修改时间 stutus INT -- 状态(1表示在职,0表示离职) ); 创建dept_history表 CREATE TABLE dept_history ( dhid INT auto_increment PRIMARY KEY, -- 部门变动编号(自动增长,无需赋值) empid VARCHAR(5), -- 员工编号 olddept VARCHAR(15), -- 调动前的部门(新入职的员工old值记为NULL) newdept VARCHAR(15), -- 调动后的部门 uptime DATE, -- 修改时间 FOREIGN KEY (empid) REFERENCES employee(empid) ); 创建sal_history表 CREATE TABLE sal_history ( shid INT auto_increment PRIMARY KEY, -- 工资变动编号(自动增长,无需赋值) empid VARCHAR(5), -- 员工编号 oldsal INT, -- 变动前的工资 newsal INT, -- 变动后的工资 uptime DATE, -- 修改时间 FOREIGN KEY (empid) REFERENCES employee(empid) ); 任务一:

当新职工入职时,员工信息表将插入1条数据。同时,触发器在部门变动历史中增加1条记录,其中olddept值为null;在工资变动历史中增加1条记录,其中oldsal值为0。

创建insert触发器 DELIMITER $ CREATE TRIGGER emp_insert AFTER INSERT ON employee FOR EACH ROW BEGIN INSERT INTO dept_history(empid,olddept,newdept,uptime) VALUES(new.empid,null,new.dept,new.uptime); INSERT INTO sal_history(empid,oldsal,newsal,uptime) VALUES(new.empid,0,new.salary,new.uptime); END$ DELIMITER ; 插入数据 INSERT INTO employee VALUES('101','李华','策划部',6000,'2001-02-18',1); INSERT INTO employee VALUES('102','王梅','信息部',8000,'2001-04-18',1); INSERT INTO employee VALUES('103','王刚','信息部',9000,'2001-04-19',1); INSERT INTO employee VALUES('104','梅芳','宣传部',4000,'2001-03-19',1); 验证结果 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 任务二

当新职工部门或工资发生变化时,触发器执行以下操作。若部门发生变动,则在变动历史中增加1条记录;若工资发生变动,则在工资变动历史中增加1条记录。

创建update触发器 DELIMITER $ CREATE TRIGGER emp_update AFTER UPDATE ON employee FOR EACH ROW BEGIN IF(new.dept!=old.dept OR new.stutus=0) THEN INSERT INTO dept_history(empid,olddept,newdept,uptime) VALUES(new.empid,old.dept,new.dept,new.uptime); END IF; IF(new.salary!=old.salary OR new.stutus=0) THEN INSERT INTO sal_history(empid,oldsal,newsal,uptime) VALUES(new.empid,old.salary,new.salary,new.uptime); END IF; END$ DELIMITER ; 更新数据 UPDATE employee SET dept=null,salary=0,uptime='2002-02-18',stutus=0 WHERE empid='101'; UPDATE employee SET dept='技术部',uptime='2002-09-18' WHERE empid='102'; UPDATE employee SET salary=6000,uptime='2002-02-20' WHERE empid='104'; 验证结果 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有