MYSQL,触发器,实现多个表共用ID不重复

参考:https://my.oschina.net/jiuxiaoyao/blog/839266

MYSQL 没有sequence

SET @@auto_increment_offset
SET @@auto_increment_increment

也只能在当前查询有效.所以这也是权宜之计

DROP TRIGGER IF EXISTS `InsertUser`;
create trigger InsertUser
before insert on userinfo
for each row
Begin   

declare id int;
insert into user values (NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);#让自动增长的表插入失败,ID作废,就可以让触发器的表使用
select id  into @id from user order by id desc limit 1;

set new.id = @id;

end;  
时间: 2024-08-10 21:21:04

MYSQL,触发器,实现多个表共用ID不重复的相关文章

【转】mysql 触发器实现两个表的数据同步

mysql通过触发器实现两个表的同步 目前,在本地测试成功. 假设本地的两个数据库a和b,a下有表table1(id, val) b下有表table2(id, val) 假设希望当table1中数据更新,table2中数据同步更新. 代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ TRIGGER `a`.`触发器名` BEFORE UPDATE ON `a`.`table1` FOR EACH ROW BEGIN I

mysql触发器应用和创建表错误代码: 1118 Row size too large. 解决

1.针对数据库查询问题的方便,可以建立重要表的log备份记录表,在主表的添加,修改,删除添加触发器,修改触发器增加触发字段的点,限制条件. 数据库log表查问题比从线上多台服务器上下载日志文件相对方便,但是两者的侧重点不同. 2.错误代码: 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhe

8Python全栈之路系列之MySQL触发器

Python全栈之路系列之MySQL触发器 l 对某个表进行增/删/改操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行增/删/改前后的行为. 创建触发器基本语法 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN     ... END 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON t

mysql/mariadb数据库在插入表数据时,ID竟然成奇数增加了?看完下面内容就知道怎么处理了。

今天突然被问到一个问题,mysql数据库插入表数据时,设置了ID自增,但是插入数据后,ID却呈奇数增加,不是123456类型,而是13579形式,突然有点懵,研究了一会,发现是auto_increment步长的问题,下面就具体来说下怎么解决: 插入数据后发生表内ID按奇数增加,如下图: 查看自增步长:show variables like 'auto_increment%'; 将自增步长改为1:set @@auto_increment_increment=1; 此时用truncate清空表数据重

MYSQL触发器记录用户操作的命令

假如有一张重要的表btb,需要几个管理员来管理 管理员:[email protected].[email protected].[email protected] 要求给表btb创建触发器: trigger触发器需求: 1.当在btb表中做insert.update.delete操作时,在btb_trace表中记录执行操作的用户.时间.操作命令. 1.当在btb表中插入新记录时,atb_bak表中会将atb表中的所有数据记录下来.保持同步备份. 2.当在btb表中删除数据前,在atb_del表中

mysql 触发器 Varnish:高速http缓存 varnish cdn 推送平台

sendfile(数据直接从 kernal的buffer出去)适合小文件Aio(nginx)全异步(与事件驱动io的区别是:数据会到达mem才会通知,其实也不需要通知 可以直接返回给客户端) 支持:mmap event drive(处理大文件) 上一回说到,在数据库修改后,redis里面的数据不能做到自动更新,必须手动删除更改过的数据 根据以上问题我们做出如下改进:所以接下来就要通过 mysql 触发器将改变的数据同步到 redis 中配置 gearman 实现数据同步Gearman 是一个支持

实现mysql和redis之间的触发数据同步——mysql 触发器+gearman+php.worker

上回一次我们已经实现了 redis 作为 mysql 的缓存服务器,但是如果更新了 mysql,redis 中仍然会有对应的 KEY,数据就不会更新,此时就会出现 mysql 和 redis 数据不一致的情 况. 详情请见        基于redis缓存数据库实现lnmp架构高速访问 所以接下来就要通过 mysql 触发器将改变的数据同步到 redis 中. 因为mysql和redis数据格式不同,不能实现直接同步,所以 将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP

mysql 触发器学习

mysql 触发器学习 1. 一个简单的例子 1.1. 创建表: create table t(s1 integer); 1.2. 触发器: delimiter | create trigger t_trigger before insert on t  for each row begin set @x = "hello trigger";        set NEW.s1 = 55; end; | 1.3. 如果触发器创建错误,可能只能删除了,至少我试过不能replace dro

mysql 触发器的学习1

mysql> #接下来学习触发器的概念mysql> #触发器是由事件来触发某个操作的,包括insert update delete语句mysql> #触发器的基本形式:mysql> #create trigger 触发器名 before|after 触发事件 on 表名 for each row 执行语句mysql> #如果需要执行多条语句则使用 begin …… end 不同语句之间用“:”分号分割mysql> #所以使用多行执行语句时,一定要用到的是 delimit