我正在编写一个基于Perl的应用程序,它将SQLite数据库转换为Excel工作簿并再次返回。它按原样工作,但缺少一小块。我不知道如何确定是否为特定列设置了UNIQUE约束。你如何确定列是否在SQLite数据库中设置了UNIQUE约束?
要得到数据库中的表的列表,我用:
select name from sqlite_master
where type = 'table'
and name <> 'sqlite_sequence' order by name;
然后拿到列和约束信息为每个表,我做的:
PRAGMA table_info($TableName);
这告诉我的一切,我除非列启用了UNIQUE约束,否则需要知道。
如果不清楚,这里是一个简单的例子。假设我做这个创建一个数据库表:
CREATE TABLE DATA
(
ID integer primary key,
Invoice integer unique,
Product varchar,
Comment varchar
);
我想知道我怎么能随后询问这种方式创建,以确定哪些列具有UNIQUE约束集SQLite数据库表。在这种情况下,它将是发票栏。
有什么建议吗?
不知道它的问题在这里,但不要忘了,多列唯一约束是可能的('UNIQUE(A,B)')。 – ikegami
它很重要。好点子。 – Rodney