2010-12-07 60 views
2

我有這樣是否有可能在一組行上有一個唯一的而不是整個表?

 
CREATE TABLE IF NOT EXISTS grouped_executions (
    id    INTEGER UNSIGNET NOT NULL , 
    execution_id INTEGER UNSIGNED NOT NULL REFERENCES execution.execution_id , 
    president  BOOLEAN NOT NULL DEFAULT 0 

    PRIMARY KEY (id, execution_id) 
) ENGINE = InnoDB ; 

表中所有我想要的是讓總統一組具有相同ID的行中是獨一無二的。

例如:我有這樣的數據:

 
id | execution_id | president 
= - = - = - = - = - = - = - = 
1 | 1   | 0 
1 | 2   | 1 
1 | 3   | 0 
1 | 4   | 0 
我想的MySQL防止插入ID爲新行= 1個&總裁= 1

(當然我可以使保持的基團的總裁但是另一個表以上結構可能?)

+0

我認爲更好的設計就像你說的,把它放在另一張桌子上。 – Danosaure 2010-12-07 09:03:32

+0

是啊!我要做另一張桌子:)謝謝 – everplays 2010-12-07 09:17:02

回答

1

你可能想嘗試設置默認爲NULL president作爲唯一鍵允許多個NULL值,但隨後,它那種毫無意義有隻有一個1和許多NULL S,但bool沒有0。如果你不想設置觸發器之類的其他機制(由@David Hedlund建議),你最好用另一張關係表(就像你提到的那樣)。這樣,如果你有一天想要一個獨特的「祕書」或「財政部門」,定義一個新表格而不是使用該觸發器(或另一個)來驗證這種關係很容易。

-1

你試過嗎?

ALTER TABLE grouped_executions ADD CONSTRAINT PRIMARY KEY (id, president); 
相關問題