关键词:
MyCAT自增字段和返回生成的主键ID的经验分享 说明: 1、mysql本身对非自增长主键,使用last_insert_id()是不会返回结果的,只会返回0. 2、mysql只会对定义自增长主键,可以用last_insert_id()返回主键值。 mycat目前提供了自增长主键功能,但是如果对应的mysql节点上数据表,没有定义auto_increment, 那么在mycat层调用last_insert_id()也是不会返回结果的。 正确使用方式如下: 1、mysql定义自增主键 CREATE TABLE `tt2` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `nm` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MYISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; 2、mycat定义自增 [[email protected] conf]# vim schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <!-- random sharding using mod sharind rule --> <!-- autoIncrement="true" 属性--> <table name="tt2" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2,dn3,dn4,dn5" rule="mod-long" /> <table name="mycat_sequence" primaryKey="name" dataNode="dn1"/> </schema> <dataNode name="dn1" dataHost="localhost1" database="db1" /> <dataNode name="dn2" dataHost="localhost1" database="db2" /> <dataNode name="dn3" dataHost="localhost1" database="db3" /> <dataNode name="dn4" dataHost="localhost1" database="db4" /> <dataNode name="dn5" dataHost="localhost1" database="db5" /> <dataHost name="localhost1" maxCon="1000" minCon="20" balance="0" writeType="0" dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="127.0.0.1:3366" user="root" password="123456"> </writeHost> </dataHost> </mycat:schema> 3、mycat对应sequence_db_conf.properties增加相应设置; 4、mycat的对应mycat_sequence增加对应记录。 5、链接mycat,测试结果如下: 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.14 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 101 | +------------------+ 1 row in set (0.01 sec) 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.00 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 102 | +------------------+ 1 row in set (0.00 sec) 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.00 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 103 | +------------------+ 1 row in set (0.00 sec) 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.01 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 104 | +------------------+ 1 row in set (0.00 sec) 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.00 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 105 | +------------------+ 1 row in set (0.00 sec) 127.0.0.1/root:[TESTDB> insert into tt2(nm) values (99); Query OK, 1 row affected (0.00 sec) 127.0.0.1/root:[TESTDB> select last_insert_id(); +------------------+ | LAST_INSERT_ID() | +------------------+ | 106 | +------------------+ 1 row in set (0.00 sec)
建立主键自增表(代码片段)
MySQL在建表的时候声明字段即可idintauto_incrementprimarykeynotnullOracle第一步:建立表droptablet_role;createtablet_role(role_namevarchar(255)NOTNULL,notevarchar(255)NOTNULL,idnumberNOTNULL,PRIMARYKEY(id));这里需要注意主键id得是num 查看详情
mycat实战之主键数据库自增方式
创建一个person表,主键为Id,hash方式分片,主键自增(采用数据库方式)#person表结构如下Id,主键,Mycat自增主键name,字符串,16字节最长school,毕业学校,数字,1-1000范围,是学校编号age,年龄,18-60addr,地址,32字节,建议为gz-ti... 查看详情
xorm插入数据库后返回主键自增id(代码片段)
golang使用xorm连接数据库后,插入结构体,无法返回自增主键id,饭后的主键id都是0。经过研究发现,如果给结构体id设置xormtag,则会默认id为0,不会返回插入成功后的主键id。xorm文档中如下描述 1packagemain23import(4"fmt"5"time"67_"g... 查看详情
mybatis怎么设置主键自增
设置主键自增,应该是设置具体的数据库,与mybatis没有什么关系吧。以mysql为例,假设主键为id1.可以在创建表的时候设置主键createtabletb(idbigint(20)primarykeyauto_increment);2.也可以在修改表结构的时候设置主键altertabletbmodifyidbigint(20)pr... 查看详情
postgresql设置主键自增重置主键自增从1开始(代码片段)
目录新建序列自增1.右键设计表,选中主键2.点击上方的“其他”,选择序列,点击新建序列3.如下所示,和下图填入同样的内容并保存,取个名book_vendorcode_bid_seq(名字可以改,可以自己取一个)4.... 查看详情
数据库powerdesigner设置主键自增
...生在使用PowerDesigner设计数据库时如果没有在模型中设置主键自增在navicat中对于有外键约束的字段尝试设置主键自增会失败✨解决方案在生成SQL之前在PowerDesigner中设置主键自增选择物理模型!概念模型和逻辑模型不可以设置必须... 查看详情
mysql数据库安装使用教程10:列属性(列约束)---主键自增默认值注释(代码片段)
...是否为空:null或是notnull3、字段默认值——default4、主键(主索引、唯一索引)——primarykey(PK)5、自动增长——auto_increment6、列备注——comment一、类属性(列约束) 查看详情
postgresql如何让主键自增
参考技术Apostgresql如何让主键自增法一:?123456789Sql代码CREATETABLEcustomers(customeridSERIALprimarykey,companynamecharactervarying,contactnamecharactervarying,phonecharactervarying,countrycharactervarying)法二:?123456789Sql代码CREATESEQUENCEevent_id_seqSTARTWITH1INCREMENTBY1NO... 查看详情
db2如何主键自增
简单啊,用序列!不过序列不会自动填充,那么写个触发器,让插入数据的时候,想要自增的主键去获取序列并填充。自增列不好用,高并发容易出问题。参考技术A两个方案1)sequence自增;2)自增列 参考技术B建议建SEQUENCE 查看详情
解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值
记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情
解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值
记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情
解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值
记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情
业务id生成策略(代码片段)
...提升。先来介绍普遍的分布式ID生成策略:1.利用DB的自增主键 这里又有两种做法,一种是单独创建一个只有自增主键的表,来负责主键自增,业务表从这里取得自增的主键返回给业务主键生成组件使用。 另外一种:业... 查看详情
mysql主键自增
比如创建表格,表格ID需要自增 将ID设置成主键,并配置auto_increment 例:createtabletest(id int(4) notnull primarykey auto_incrementusernamechar(20) passwdchar(20)) 查看详情
mysql怎么利用函数和触发器实现非主键自增?
...章将要给大家介绍的是MySQL怎么利用函数和触发器实现非主键自增,由于内容介绍的非常详细,且具有一定的参考价值,相信大家在生活中会用到,因此,感兴趣的朋友不妨来看看。一、MySQL利用函数实现非主... 查看详情
oracle实现主键字段自增(代码片段)
Oracle实现主键自增有4种方式:IdentityColumns新特性自增(Oracle版本≥12c)创建自增序列,创建表时,给主键字段默认使用自增序列创建自增序列,使用触发器使主键自增创建自增序列,插入语句(inse... 查看详情
oracel数据库主键自增
--Createsequencecreate sequence FILE_ID_SEQ 主键名(自增列)minvalue 1 起始maxvalue 99999 最 查看详情
mycat分片表全局自增主键测试
mycat分片表全局自增主键测试mycat分片表全局自增主键测试一、全局序列号介绍在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,MyCat 提供了全局sequence,并且提供了包含本地配置和数据库配... 查看详情