mysql自动生成字符串的主键是自动增长的
以前用oracle里面的序列再用触发器可以实现,我的主键是char型的,好像不能用auto_increment,怎么自动生成主键呢?...
以前用oracle里面的序列再用触发器可以实现,
我的主键是char型的,好像不能用auto_increment,怎么自动生成主键呢? 展开
我的主键是char型的,好像不能用auto_increment,怎么自动生成主键呢? 展开
4个回答
展开全部
建议使用uuid作为主键,
select replace(uuid(),'-','');
insert的时候用这个replace(uuid(),'-','')
select replace(uuid(),'-','');
insert的时候用这个replace(uuid(),'-','')
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MySQL
通过
AUTO_INCREMENT设置
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
通过
AUTO_INCREMENT设置
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在设计表的时候就有问题,一般主键都定义为int类型,可设置为自增列。int型便于索引的优化与数据检索。 而你使用的char类型,随之而来的问题就如lz所问。
追问
是这样的,比如说我有一个订单表,然后他的订单主码是char(9),我就想自动生成形如E000000045这种类型的主码。
追答
一般的,这种设计还是需要主键的,你说的可以做为一个OrderNo(订单号)列存在,那它的生成规则就可以设计为"E00000000"+主键这种样子
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字段属性为 auto_increment
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询