我需要创建一个SQLite表
问题描述:
我需要能够在表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)
任何人都知道如何做到这一点?
答
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
答
如果表B对列有唯一约束,那么如果您想在该列中输入重复值,则必须删除唯一约束。
编辑:换句话说,从您的表创建代码中删除单词UNIQUE
。我假设“一个标记为唯一的字段”是指STA
列,因为这是您在该列中唯一唯一的列。
编辑第二:根据下面您的意见,您想要把一个约束的SITE_ID
和STA
领域的独特组合。你会改变你的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违反唯一约束的行。 – 2011-02-17 22:42:08
是的,这是STA列。但是,如果我删除了UNIQUE约束,那么如何不允许在同一个SITE_ID中重复? – SpokaneDude 2011-02-17 22:46:49