AUTO_INCREMENT in mysql 可以默认签名吗?
AUTO_INCREMENT in mysql can be signed by default?
我明白了,column
以下默认为signed int
。
id INT(6);
下面指定的auto increment column
可以默认签名吗? Mysql 自动递增列的值从 1 开始。
id INT(6) AUTO_INCREMENT PRIMARY KEY
是的,您可以使用带符号的 int 创建一个自动递增主键。试试这个:
CREATE TABLE mytable( id int(6) AUTO_INCREMENT PRIMARY KEY);
那么下面的查询都是有效的
INSERT INTO mytable values();
INSERT INTO mytable values(-10);
这将导致 table 有一行值为 -10,另一行值为 1。但是如果你这样做,你会 运行 遇到问题:
ALTER TABLE mytable AUTO_INCREMENT=-10;
是的,您不能使用负数的自动增量值。
经过大量搜索...我寻找了一个带有名为 BEFORE INSERT 的 TRIGGER 的解决方案!我发现了这个:
这是我的变体:
CREATE TRIGGER `invertID`
BEFORE INSERT ON `<table>`
FOR EACH ROW SET NEW.id=CONCAT("-", (
SELECT `auto_increment`
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = '<table>')
)
对我来说效果很好。
这是我发现在我的表中使用相同模式但 ID 相同但双向同步两个数据库的最佳方法。
我明白了,column
以下默认为signed int
。
id INT(6);
下面指定的auto increment column
可以默认签名吗? Mysql 自动递增列的值从 1 开始。
id INT(6) AUTO_INCREMENT PRIMARY KEY
是的,您可以使用带符号的 int 创建一个自动递增主键。试试这个:
CREATE TABLE mytable( id int(6) AUTO_INCREMENT PRIMARY KEY);
那么下面的查询都是有效的
INSERT INTO mytable values();
INSERT INTO mytable values(-10);
这将导致 table 有一行值为 -10,另一行值为 1。但是如果你这样做,你会 运行 遇到问题:
ALTER TABLE mytable AUTO_INCREMENT=-10;
是的,您不能使用负数的自动增量值。
经过大量搜索...我寻找了一个带有名为 BEFORE INSERT 的 TRIGGER 的解决方案!我发现了这个:
这是我的变体:
CREATE TRIGGER `invertID`
BEFORE INSERT ON `<table>`
FOR EACH ROW SET NEW.id=CONCAT("-", (
SELECT `auto_increment`
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = '<table>')
)
对我来说效果很好。
这是我发现在我的表中使用相同模式但 ID 相同但双向同步两个数据库的最佳方法。