2016-08-17 53 views
2

據我所知,低於column默認爲signed intmysql中的AUTO_INCREMENT可以默認簽名嗎?

id INT(6); 

以下指定的auto increment column可以在默認情況下進行簽名嗎? Mysql從1開始爲自動增量列設置值。

id INT(6) AUTO_INCREMENT PRIMARY KEY 
+0

爲什麼你不試試? – Jens

回答

1

是的,你可以創建一個帶有符號整數的自動遞增主鍵。試試這個:

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; 

是的,你不能是負數自動增量值。

+0

那麼如何使一個TRIGGER採用ID並在INSERT之後添加減號呢?可能嗎 ? – Meloman

+0

是的,可能但你正在玩火。如果你打算將生成的id乘以-1,那麼這將是安全的@Meloman – e4c5

+0

Mutiply by -1比CONCAT更安全(' - ',id)?有趣的...我在這裏根據https://stackoverflow.com/a/44802856/2282880做了一個例子爲我工作,你在想什麼? – Meloman

0

經過大量的搜索......我找了一個叫做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。

相關問題