我需要创建一个SQLite表

时间:2011-02-17 22:33:16

标签: sql sqlite

我需要能够在表B中输入具有不同外键的重复条目(表B引用表A的键)。像这样:

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)

有人知道怎么做吗?

2 个答案:

答案 0 :(得分: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)
 ) 

答案 1 :(得分: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
 )

将UNIQUE添加到外键将仅拒绝具有相同SITE_ID和STA

的行