[英]Insert in to child table that have foreign key to an auto_increment column
[英]Is it possible to have an AUTO_INCREMENT column that permits duplicates?
我有一個具有AUTO_INCREMENT
字段的表。 當前,它也是一個主鍵。
但是,在某些情況下,我需要此AUTO_INCREMENT
列來允許重復。 換句話說,兩個不同的行在AUTO_INCREMENT
列中可以具有相同的值。 這將意味着擁有一個不是PRIMARY KEY的AUTO_INCREMENT字段。
這可能嗎?
我猜不是,因為每當嘗試這樣做時,都會出現此錯誤:
ERROR 1075 (42000) at line 130: Incorrect table definition; there can be only one auto column and it must be defined as a key
我喜歡擁有AUTO_INCREMENT字段,因為它使我不必在數據庫的其他位置手動存儲/增加單獨的計數器。 我可以只插入表中並獲取插入的值。 但是,如果我不能重復,看來我將不得不使用單獨的表來跟蹤和手動增加此字段。
更新:作為快速說明,我已經熟悉將AUTO_INCREMENT字段與另一個鍵組合在一起, 如此處所述 。 為了便於討論,我們假設由於數據庫中的其他限制,該解決方案將無法工作。
MySQL中的自動遞增字段必須是鍵 (即索引)的一部分,但不一定是主鍵或唯一鍵的一部分。
CREATE TABLE mytable (
id INT PRIMARY KEY,
otto INT AUTO_INCREMENT,
KEY (otto)
);
-- allow the auto-increment to generate a value
INSERT INTO mytable (id, otto) VALUES (123, DEFAULT);
SELECT * FROM mytable;
> 123, 1
-- specify a duplicate value, overriding the auto-increment mechanism
INSERT INTO mytable (id, otto) VALUES (456, 1);
SELECT * FROM mytable;
> 123, 1
> 456, 1
-- allow the auto-increment to generate another value
INSERT INTO mytable (id, otto) VALUES (789, DEFAULT);
SELECT * FROM mytable;
> 123, 1
> 456, 1
> 789, 2
聽起來像“子任務”是一個表,“任務”具有FK引用。 即,如果子任務被重用。
OTOH如果一個任務可以有多個子任務,並且一個子任務可以鏈接到多個任務,那么您將在一個單獨的表中查看多對多。
無論哪種情況,我都不認為您希望數據庫自動生成這些“鏈接ID”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.