我使用表約束創建一個複合主鍵,我想id
字段爲自動增量,這可能嗎?或者有什麼選擇?一個帶有複合主鍵的表,其中一個字段帶有自動增量
CREATE TABLE IF NOT EXISTS atable(
id INTEGER NOT NULL, --I want to autoincrement this one
name TEXT NOT NULL,
anotherCol TEXT,
PRIMARY KEY(id, name));
我使用表約束創建一個複合主鍵,我想id
字段爲自動增量,這可能嗎?或者有什麼選擇?一個帶有複合主鍵的表,其中一個字段帶有自動增量
CREATE TABLE IF NOT EXISTS atable(
id INTEGER NOT NULL, --I want to autoincrement this one
name TEXT NOT NULL,
anotherCol TEXT,
PRIMARY KEY(id, name));
不,只有一個主鍵:這是id和name的組合。
如果你的意思是你想要id是主鍵,並且名字是一個索引的替代鍵,我會說你應該給一個唯一的約束命名並使id爲主鍵。
這裏是SQLite常見問題頁面的鏈接,你如何自動增加一個整數主鍵的問題是#1。 http://www.sqlite.org/faq.html#q1
這是你的SQL返工一點:
CREATE TABLE IF NOT EXISTS atable(
id INTEGER PRIMARY KEY, -- use NULL for this column on INSERT to autoinc
name TEXT NOT NULL,
anotherCol TEXT);
然後創建名的唯一指數duffymo和卡萊布的建議。
在我看來,OP並不希望名稱是唯一的。 (但我可能是錯的。)無論如何,你可以
INTEGER PRIMARY KEY
和NULL插入該列獲得一個自動遞增整數,superkey只是一個候選鍵(在這種情況下是主鍵)加上一個或多個列。
CREATE TABLE yourtable(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
CONSTRAINT superkey UNIQUE (id, name)
);
如果您在使用PRAGMA foreign_keys = on;
打開外鍵的支持,超密鑰可以在其他表的外鍵約束的目標。但我不確定那是你在找什麼。
你爲什麼要把名字放在主鍵上?如果你想要名稱是唯一的,爲什麼不使用CREATE UNIQUE INDEX? – 2011-01-22 22:04:14