2011-02-17 165 views
0

我需要能夠在表B中輸入重複條目,具有不同的外鍵(表B引用表A的關鍵)。就像這樣:我需要創建一個SQLite表

Table A: 
Record with key of 11 
Record with key of 22 

Table B: 
Record referring to Table A record 11, with a field marked unique: value 101 
Record referring to Table A record 22, with a field marked unique: value 101 <--- violates the unique key 

這是我曾經嘗試過,但沒有奏效:

CREATE TABLE Readings (
    SITE_ID TEXT REFERENCES SiteData 
    , LOOP_NBR TEXT 
    , LOOP_CLOSED BINARY 
    , SEQ INTEGER 
    , STA TEXT UNIQUE 
    , BS TEXT 
    , FS TEXT 
    , HI TEXT 
    , DESC TEXT 
) 

INSERT INTO Readings (SITE_ID, SEQ) VALUES (' + databaseKey + ', 0) 

任何人都知道如何做到這一點?

回答

0
CREATE TABLE Readings (
    SITE_ID TEXT UNIQUE REFERENCES SiteData 
    , LOOP_NBR TEXT 
    , LOOP_CLOSED BINARY 
    , SEQ INTEGER 
    , STA TEXT UNIQUE 
    , BS TEXT 
    , FS TEXT 
    , HI TEXT 
    , DESC TEXT 
) 

添加獨特的外鍵會拒絕只與同SITE_ID和STA

1

如果表B對列有唯一約束,那麼如果您想在該列中輸入重複值,則必須刪除唯一約束。

編輯:換句話說,從您的表創建代碼中刪除單詞UNIQUE。我假設「一個標記爲唯一的字段」是指STA列,因爲這是您在該列中唯一唯一的列。

編輯第二:根據下面您的意見,您想要把一個約束的SITE_IDSTA領域的獨特組合。你會改變你的SQL查詢是:

CREATE TABLE Readings (
    SITE_ID TEXT REFERENCES SiteData, 
    LOOP_NBR TEXT, 
    LOOP_CLOSED BINARY, 
    SEQ INTEGER, 
    STA TEXT, 
    BS TEXT, 
    FS TEXT, 
    HI TEXT, 
    DESC TEXT, 
    CONSTRAINT UNIQUE (SITE_ID, STA) 
) 
+0

+1違反唯一約束的行。 – 2011-02-17 22:42:08

+0

是的,這是STA列。但是,如果我刪除了UNIQUE約束,那麼如何不允許在同一個SITE_ID中重複? – SpokaneDude 2011-02-17 22:46:49

相關問題