据我所知,低于column
默认为signed int
。mysql中的AUTO_INCREMENT可以默认签名吗?
id INT(6);
以下指定的auto increment column
可以在默认情况下进行签名吗? Mysql从1开始为自动增量列设置值。
id INT(6) AUTO_INCREMENT PRIMARY KEY
据我所知,低于column
默认为signed int
。mysql中的AUTO_INCREMENT可以默认签名吗?
id INT(6);
以下指定的auto increment column
可以在默认情况下进行签名吗? Mysql从1开始为自动增量列设置值。
id INT(6) AUTO_INCREMENT PRIMARY KEY
是的,你可以创建一个带有符号整数的自动递增主键。试试这个:
CREATE TABLE mytable(id int(6) AUTO_INCREMENT PRIMARY KEY);
那么下面的查询都是有效
INSERT INTO mytable values();
INSERT INTO mytable values(-10);
这将导致有一排-10,另一个为1值的表。但是,你会遇到的问题,如果你试试这个:
ALTER TABLE mytable AUTO_INCREMENT=-10;
是的,你不能是负数自动增量值。
经过大量的搜索......我找了一个叫做BEFORE INSERT的TRIGGER解决方案!我发现这一点:https://stackoverflow.com/a/43441586/2282880
这里是我的变种:
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。
为什么你不试试? – Jens