首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在触发器中更改表AUTO_INCREMENT号

问在触发器中更改表AUTO_INCREMENT号
EN

Database Administration用户
提问于 2014-06-26 03:48:01
回答 1查看 10K关注 0票数 1

我想让我的自动增量列在插入时按3步递增。

我可以做这样的事:

代码语言:javascript
复制
Alter table `mytable` auto_increment = (select max(id) from mytable) + 3;

在扳机里?

我知道MySQL有一个AUTO_INCREMENT_INCREMENT设置,但是由于我在共享服务器上,所以不能更改它。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-06-26 06:04:00

在MySQL中,您可以直接插入AUTO_INCREMENT列。因此,以MySQL手册中的示例为例:

代码语言:javascript
复制
CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) ENGINE=MyISAM;

INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');

SELECT * FROM animals;

返回:

代码语言:javascript
复制
+----+---------+
| id | name    |
+----+---------+
|  1 | dog     |
|  2 | cat     |
|  3 | penguin |
|  4 | lax     |
|  5 | whale   |
|  6 | ostrich |
+----+---------+

让我们试试这个:

代码语言:javascript
复制
TRUNCATE TABLE animals;

CREATE TRIGGER increment_insert BEFORE INSERT ON animals
  FOR EACH ROW 
    SET NEW.id = (SELECT MAX(id) + 2 FROM animals);

INSERT INTO animals (name) VALUES
    ('dog'),('cat'),('penguin'),
    ('lax'),('whale'),('ostrich');

SELECT * FROM animals;

返回:

代码语言:javascript
复制
| ID |    NAME |
|----|---------|
|  1 |     dog |
|  3 |     cat |
|  5 | penguin |
|  7 |     lax |
|  9 |   whale |
| 11 | ostrich |

(顺便说一句,这不是第三步,而是你想要的第二步)

SQL Fiddle

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/69073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档