我使用表约束创建复合主键,我希望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));
答案 0 :(得分:5)
不,只有一个主键:这是id和name的组合。
如果你的意思是你想让id成为主键,并且将name命名为索引的备用键,我会说你应该给name一个唯一的约束并将id作为主键。
答案 1 :(得分:0)
以下是SQLite FAQ页面的链接,其中有关如何自动增量整数主键的问题是#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和Kaleb的建议在NAME上创建一个唯一索引。
答案 2 :(得分:0)
我不认为OP希望名称是唯一的。 (但我可能是错的。)无论如何,你可以
INTEGER PRIMARY KEY
并在该列中插入NULL来获取自动增量整数,超级密钥只是一个候选密钥(在这种情况下是主键)加上一个或多个列。
CREATE TABLE yourtable(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
CONSTRAINT superkey UNIQUE (id, name)
);
如果使用PRAGMA foreign_keys = on;
打开外键支持,则超级键可以成为其他表中外键约束的目标。但我不确定那是你在找什么。