【问题标题】:PostgreSQL primary key auto increment crashes in C++PostgreSQL 主键自动增量在 C++ 中崩溃
【发布时间】:2011-12-07 20:12:41
【问题描述】:

使用 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 中创建主键字段的最佳语法和方法吗?

【问题讨论】:

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


    【解决方案1】:

    您不需要NOT NULL。当您定义列PRIMARY KEYS 时,这是隐含的。根据文档:

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

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

    所以这是完美的语法:

    CREATE TABLE mytable (mytableid serial PRIMARY KEY);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 2011-12-04
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多