2012-12-08 58 views
1

我知道這裏有很多類似的問題,但這並不是我想問的典型問題。 我有這樣的一個表:定義Sqlite中表格的兩個字段之間的唯一關聯

CREATE TABLE example (
    field1 INTEGER NOT NULL, 
    field2 INTEGER NOT NULL, 
    field3 TEXT, 
    PRIMARY KEY(field1,field2) 
    FOREIGN KEY(field2) REFERENCES example2(field2) 
); 

我想禁止是一個字段3字段1多但保持與允許同一字段1和字段3,但不同的域2的值。 實際上,如果field2不同,我想爲每個field3提供一個唯一的field1,但每個field1都有多個field3。

爲了幫助你理解我的意思,我給ü一些例子:

INSERT INTO example VALUES(1,1,"apple"); 
INSERT INTO example VALUES(1,2,"apple"); allowed 
INSERT INTO example VALUES(2,1,"apple"); forbidden 
INSERT INTO example VALUES(2,3,"apple"); forbidden 

附: :PRIMARY_KEY(field1,field2,field3)和UNIQUE(field1,field3)不是答案。

回答

0

你的公會無法要麼某些PRIMARY KEY/UNIQUE或一些CHECK約束被強制執行(因爲SQLite的在CHECK表達does not allow子查詢)。

您的問題是此表格不正確normalized,即它不在second normal formfield3列可能應該移動到一個單獨的表格(但是如果不知道這些值的含義,這很難說)。

相關問題