我使用MySQL创建一个表:
CREATE TABLE school.student(
Std_id INT NOT NULL AUTO_INCREMENT,
Std_name CHAR(40) NOT NULL,
Std_Birth DATE,
Std_Group CHAR(2) check(Std_Group in ('G1', 'G2','G3','G4'))
);
我尝试让自动增量从1000开始,并在使用CREATE时递增2(1000,1002,1004,1006等)。
4条答案
按热度按时间t1rydlwq1#
您可以按以下方式执行此操作:
select case when count(Std_id) >= 1 then max(Std_id) + 2 else 1000 end
:检查表中是否有记录。如果没有,将插入第一个id为1000的记录。dgtucam12#
tcomlyy63#
您可以使用table选项从1000开始对给定表执行auto_increment:
请注意,生成的下一个id将比表选项设置的值大1,因此它将生成值1001。如果您希望它包含值1000,请设置表选项
AUTO_INCREMENT=999
。你的另一个要求更难。
https://dev.mysql.com/doc/refman/8.0/en/replication-options-source.html#sysvar_auto_increment_increment 说:
不可能将这两个变量的影响限制在单个表中;这些变量控制MySQL服务器上 all 表中所有AUTO_INCREMENT列的行为。
换句话说,如果设置了
auto_increment_increment=2
,这将应用于所有具有自动递增列的表。你可以只在插入到student表之前将
auto_increment_increment=2
设置为会话变量,然后在插入到另一个表之前将其设置回默认值。这听起来很容易出错,因为你可能忘记更改会话变量。bfhwhh0e4#
你可以试试这个解决方案: