mysql中的AUTO_INCREMENT可以默认签名吗?

时间:2016-08-17 06:03:13

标签: mysql auto-increment unsigned signed

据我所知,column下方默认为signed int

   id INT(6);

默认情况下,下面指定的auto increment column是否可以签名? Mysql从1开始为自动增量列的值。

id INT(6) AUTO_INCREMENT PRIMARY KEY

2 个答案:

答案 0 :(得分:2)

是的,您可以使用signed int创建自动增量主键。试试这个:

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;

是的,您不能拥有负数的自动增量值。

答案 1 :(得分:1)

经过大量搜索......我找到了一个名为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的数据库的最佳方式。