2011-02-17 115 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

相关问题