1

私はテーブルを持っています:

CREATE TABLE IF NOT EXISTS city_recent
            (_id INTEGER PRIMARY KEY AUTOINCREMENT,
            city_id INTEGER NOT NULL,
            language BOOL NOT NULL,
            type BOOL NOT NULL,
            FOREIGN KEY (city_id) REFERENCES city(_id),
            UNIQUE(city_id, type) ON CONFLICT IGNORE)

しかし、ユニークは機能しません:

スクリーンショット

4

1 に答える 1

3

私はあなたのコードをテストしました、そしてそれは期待通りに働きます(テストは以下に示されています)。UNIQUEほとんどの場合、テーブルは制約なしで事前に作成されています。削除IF NOT EXISTSして確認してください。

>>> import sqlite3
>>> con = sqlite3.connect(':memory:')
>>> con.execute('''CREATE TABLE IF NOT EXISTS city_recent
...             (_id INTEGER PRIMARY KEY AUTOINCREMENT,
...             city_id INTEGER NOT NULL,
...             language BOOL NOT NULL,
...             type BOOL NOT NULL,
...             FOREIGN KEY (city_id) REFERENCES city(_id),
...             UNIQUE(city_id, type) ON CONFLICT IGNORE);''')
<sqlite3.Cursor object at 0x01298FA0>
>>> con.execute('insert into city_recent(city_id,language,type) values (0,0,1);')
<sqlite3.Cursor object at 0x0129F120>
>>> con.execute('insert into city_recent(city_id,language,type) values (0,0,1);')
<sqlite3.Cursor object at 0x01298FA0>
>>> con.execute('select * from city_recent').fetchall()
[(1, 0, 0, 1)] # -> note that there is only one row in the table
于 2013-01-25T17:45:31.440 に答える