mysql自增序列问题

pcsue 2009-08-30 08:52:03
我想在mysql中建立自增的序列,在hibernate里面配置,但我不想它从零开始,应该要怎样做才好呢?
请各位帮帮忙吧~
...全文
1401 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 2009-08-30
  • 打赏
  • 举报
回复
mysql> CREATE TABLE tb(BH CHAR(16),content VARCHAR(20),`date` DATETIME,val INT);
Query OK, 0 rows affected (0.05 sec)

mysql>
mysql>
mysql> DELIMITER $$
mysql> DROP TRIGGER IF EXISTS tri_NewBH $$
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>
mysql> CREATE TRIGGER tri_NewBH BEFORE INSERT ON tb
-> FOR EACH ROW
-> BEGIN
-> DECLARE dt CHAR(8);
-> DECLARE bh_id CHAR(16);
-> DECLARE number INT;
-> DECLARE new_bh VARCHAR(16);
->
-> SET dt = DATE_FORMAT(CURDATE(),'%Y%m%d');
->
-> SELECT
-> MAX(BH) INTO bh_id
-> FROM tb
-> WHERE BH LIKE CONCAT(dt,'%');
->
-> IF bh_id = '' OR bh_id IS NULL THEN
-> SET new_bh = CONCAT(dt,'00000001');
-> ELSE
-> SET number = RIGHT(bh_id,8) + 1;
-> SET new_bh = RIGHT(CONCAT('00000000',number),8);
-> SET new_bh=CONCAT(dt,new_bh);
-> END IF;
->
-> SET NEW.BH = new_bh;
-> END$$
Query OK, 0 rows affected (0.09 sec)

mysql>
mysql> DELIMITER ;
mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO tb(content,`date`,val) VALUES('LiangCK','2009-05-11',20);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM tb;
+------------------+---------+---------------------+------+
| BH | content | date | val |
+------------------+---------+---------------------+------+
| 2009051100000001 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2009051100000002 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2009051100000003 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2009051100000004 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2011051200000001 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2011051200000002 | LiangCK | 2009-05-11 00:00:00 | 20 |
| 2011051200000003 | LiangCK | 2009-05-11 00:00:00 | 20 |
+------------------+---------+---------------------+------+
7 rows in set (0.00 sec)
guguda2008 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 htl258 的回复:]
SQL codeCREATETABLE animals
(
id mediumintnotnull auto_increment,
namechar(30)notnull,primarykey (id)
);
auto_increment
[/Quote]
这个是从1开始的吗?TONY哥?
htl258_Tony 2009-08-30
  • 打赏
  • 举报
回复
CREATE TABLE animals 
(
id mediumint not null auto_increment,
name char(30) not null,
primary key (id)
);

auto_increment
-狙击手- 2009-08-30
  • 打赏
  • 举报
回复
mysql :auto_increment
--小F-- 2009-08-30
  • 打赏
  • 举报
回复
--MSSQL的:
--下面的代码生成长度为8的编号,编号以BH开头,其余6位为流水号。
--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
END
GO

--在表中应用函数
CREATE TABLE tb(
BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)

--插入资料
BEGIN TRAN
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
DELETE tb WHERE col=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
COMMIT TRAN

--显示结果
SELECT * FROM tb
/*--结果
BH col
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
SQL77 2009-08-30
  • 打赏
  • 举报
回复
(idunsignedintprimarykeyauto_incrementnotnull,
titlevarchar(32),
contenttext);
auto_increment就是自增长的属性


mysql如何指定id,然后自增长
auto_increment=100;

查了下,原来是这样设置,MYSQL看样子上面的不行
-狙击手- 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pcsue 的回复:]
那如果我不想是数字,是一些字符串,如流水账号之类的,我应该怎样设置呢
[/Quote]

增加缺省
SQL77 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pcsue 的回复:]
那如果我不想是数字,是一些字符串,如流水账号之类的,我应该怎样设置呢
[/Quote]
那最好用个函数解决
pcsue 2009-08-30
  • 打赏
  • 举报
回复
那如果我不想是数字,是一些字符串,如流水账号之类的,我应该怎样设置呢
--小F-- 2009-08-30
  • 打赏
  • 举报
回复
不知道mysql里面是不是
identity(int,1,1) 请梁哥来确认
华夏小卒 2009-08-30
  • 打赏
  • 举报
回复

IDENTITY(INT,1,1) --第1个1是基数,第二个数是增量
SQL77 2009-08-30
  • 打赏
  • 举报
回复
IDENTITY(INT,1,1)
??
内容概要:本文详细介绍了 MySQL 中 AUTO_INCREMENT 属性的使用方法,这是一种用于模拟序列行为的方式。它允许在表中创建自增字段,通常作为主键,确保每行数据都有唯一的标识符。文中提供了创建带有自增字段的表的示例,解释了插入数据时如何自动分配自增值,并介绍了如何使用 LAST_INSERT_ID() 函数获取最近插入行的自增值。还说明了如何查看表的当前自增值以及注意事项,如删除行后自增值不会被重用。此外,文章展示了在 PERL 和 PHP 中获取自增值的方法,并讨论了重置序列和设置序列开始值的具体操作。; 适合人群:对 MySQL 数据库有一定了解的数据库管理员或开发人员,尤其是那些需要理解和使用自增字段进行数据管理的人群。; 使用场景及目标:① 学习如何在 MySQL 中创建具有自增字段的数据表;② 掌握插入数据时不指定自增字段值的情况下,数据库如何自动分配唯一标识符;③ 了解如何在不同编程语言中获取最近插入行的自增值;④ 掌握重置序列和设置序列开始值的方法。; 其他说明:AUTO_INCREMENT 属性只能应用于整数类型的字段,并且在实际应用中应谨慎处理自增字段的重置,以免造成数据混乱。同时,在设置自增值时要注意避免唯一性冲突。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧