2012-01-01 83 views
2

我想在MySQL中創建一個表的結構是這樣的:mysql的不是唯一的自動遞增,主鍵兩個字段

id | area | name 
----+----------+------------ 
1 | name-1 | test 
    |   | 
1 | name-1 | value2 
    |   | 
2 | name-2 | test-value 
    |   | 
3 | name-3 | test 
    |   | 
3 | name-3 | test 

即。主鍵將是:primary_key(id, area)和id將是auto_increment,但我只希望id爲每個新的獨特區域增加

這是可能的嗎?

回答

3

你想要什麼是不可能的。你想idarea是主鍵,但在你的例子中,他們不是唯一的。

如果你定義一個表鍵,它必須是唯一的,在你的例子中,這意味着你需要在主鍵中包含name。但是爲什麼不製作只有id的主鍵並自動遞增呢?這是常見的用法。

編輯:

您可以創建一個名爲area_id例如一個額外的字段。您可以將自動增量功能添加到字段likE:

CREATE TABLE `areas` 
(
    `id` INT NOT NULL , 
    `area_id` INT NOT NULL AUTO_INCREMENT , 
    `area` VARCHAR(100) NULL , 
    `name` VARCHAR(100) NULL , 
    PRIMARY KEY (`id`) 
); 
+0

謝謝,我只需要這樣做。試圖想出另一種解決方案,因爲每個區域都必須有自己的ID。我猜我只需要添加另一列 - area_id。是否有可能auto_increment新列area_id,以便每個區域將有一個id類似於上面的示例中的id字段? – conor 2012-01-01 16:37:05

+0

是的,這是可能的。自動增量字段不必是主鍵。另一種可能性是將區域數據存儲在一個表格中,並創建另一個表格來引用區域表格,以使第一個表格中的每個區域只有一個條目。然後你的id域將是唯一的。 – 2012-01-01 16:46:33

+0

不幸的是,第二個選項對於我設計的系統來說是不可能的,因爲我不知道哪些數據將存儲在區域表(它的一個插件架構,以便由插件本身決定)中。那麼我怎麼能得到自動增量工作,因爲它在上面的例子(即綁定到區域字段)? – conor 2012-01-01 17:15:42

相關問題