Мне нужно создать таблицу SQLite - PullRequest
0 голосов
/ 18 февраля 2011

Мне нужно иметь возможность вводить повторяющиеся записи в таблице 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 ]

1 голос
/ 18 февраля 2011

Если таблица 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)
 ) 
0 голосов
/ 18 февраля 2011
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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...