PostgreSQL主键自动增量在C ++中崩溃

时间:2011-10-14 14:55:54

标签: c++ sql postgresql key auto-increment

使用C ++在PostgreSQL中创建整数主键自动增量字段的正确语法是什么?

我从

开始
db->ExecuteSQL("CREATE TABLE mytable (\"mytableid\" INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,

这会编译,但进程崩溃并且没有创建字段。

db->ExecuteSQL("CREATE TABLE mytable (\"mytableid\" serial PRIMARY KEY NOT NULL,

这样可以正确创建字段。

我需要NOT NULL还是serial不需要? 这是Postgres中用于创建主键字段的最佳语法和方法吗?

1 个答案:

答案 0 :(得分:5)

您不需要NOT NULL。定义列PRIMARY KEYS时暗示了这一点。每个文档:

  

从技术上讲,主键约束只是a的组合   唯一约束和非空约束。

此外,serial also implies NOT NULL。它本身不是数据类型,只是带有附加序列的integer NOT NULL的符号方便。

所以这是完美的语法:

CREATE TABLE mytable (mytableid serial PRIMARY KEY);

只要您不想使用大小写混合的identifiersreserved words或“非法”字符,就不需要对列名称进行双引号。我建议专门使用合法的小写标识符,以使您的代码不易出错(并且您的生活更简单)。