使用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中用于创建主键字段的最佳语法和方法吗?
答案 0 :(得分:5)
您不需要NOT NULL
。定义列PRIMARY KEYS
时暗示了这一点。每个文档:
从技术上讲,主键约束只是a的组合 唯一约束和非空约束。
此外,serial
also implies NOT NULL。它本身不是数据类型,只是带有附加序列的integer NOT NULL
的符号方便。
所以这是完美的语法:
CREATE TABLE mytable (mytableid serial PRIMARY KEY);
只要您不想使用大小写混合的identifiers,reserved words或“非法”字符,就不需要对列名称进行双引号。我建议专门使用合法的小写标识符,以使您的代码不易出错(并且您的生活更简单)。