【问题标题】:SQL auto increment pgadmin 4SQL 自动增量 pgadmin 4
【发布时间】:2018-07-04 21:50:43
【问题描述】:

我正在尝试使用数字生成器创建一个简单的数据库,但为什么会出现以下错误?

错误:“AUTO_INCREMENT”处或附近的语法错误
第 2 行:IDNumber int NOT NULL AUTO_INCREMENT,

代码:

CREATE TABLE Finance
(
    IDNumber int NOT NULL AUTO_INCREMENT,
    FinName varchar(50) NOT NULL,
    PRIMARY KEY(IDNumber)
);

【问题讨论】:

  • 您使用的是哪种 SQL 实现? (甲骨文/微软/MySQL/Postgres)
  • 我正在使用 pgadmin 4
  • @bozzy 。 . . pgadmin 是一个接口,它不是数据库。
  • 那么 postgres 呢?
  • 你应该(串行)数据类型。

标签: sql


【解决方案1】:

有两种选择;一种是使用“数据类型”序列或创建一个序列并将该序列用作整数的默认值,如下所示:

 CREATE SEQUENCE your_seq;
     CREATE TABLE foo(
       id int default nextval('your_seq'::regclass),
        other_column TEXT);

     INSERT INTO foo(other_column) VALUES ('bar') RETURNING *;

需要注意的是,指定表如下:

CREATE TABLE tablename (
    colname SERIAL);

相当于:

CREATE SEQUENCE tablename_colname_seq AS integer;
  CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq'));

  ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

更多关于串口的信息可以在here找到。

【讨论】:

    【解决方案2】:

    问题的主题提到了 pgAdmin 4,所以这里是如何做到这一点的。

    首先,在表格中添加一列,然后点击小编辑图标:

    然后转到约束并选择身份类型:

    这会生成类似这样的 SQL:

    CREATE TABLE public.my_table_name
    (
        id integer NOT NULL GENERATED ALWAYS AS IDENTITY,
        PRIMARY KEY (id)
    );
    

    【讨论】:

    • 同样需要填写信息。
    【解决方案3】:

    在 pgadmin-2 中。 步骤01: 创建序列:

    并设置信息:

    步骤02:进入表中的ID并设置约束

    【讨论】:

      【解决方案4】:

      您使用的 MySQL 语法在 SQL Server 中不起作用。

      CREATE TABLE Finance
      (
          IDNumber int NOT NULL IDENTITY(1,1) PRIMARY KEY,
          FinName varchar(50) NOT NULL
      );
      

      以下代码应该适用于 SQL Server。

      IDENTITY(1,1) 是 SQL Server 表示“自动递增”的方式。

      IDENTITY 的起始值是 1,每增加一条记录,它就会增加 1。

      所以:IDENTITY(startvalue, incrementvalue)

      【讨论】:

      • SQL 是一种用于查询数据库的语言。 “这应该适用于 SQL”因此是一个没有意义的语句。您可能想说的是“MS-SQL”,它与“SQL”不同。
      • @waka 是的,我在花了很多时间谈论它之后习惯于说 sql。我的坏
      【解决方案5】:

      对于 Postgres,您必须使用 SERIAL

      CREATE TABLE Finance
      (
          IDNumber SERIAL PRIMARY KEY,
          FinName varchar(50) NOT NULL
      );
      

      【讨论】:

      • 从 Postgres 10 开始,您可以使用(这是首选方式)身份(int GENERATED BY DEFAULT AS IDENTITY)。遗憾的是,pgadmin3 和 pgadmin4 都不支持这一点。
      【解决方案6】:

      如果是sql语法如下

      CREATE TABLE Persons (
          ID int IDENTITY(1,1) PRIMARY KEY,
          LastName varchar(255) NOT NULL,
          FirstName varchar(255),
          Age int
      );
      

      【讨论】:

      • 这是来自 w3s 的吗?我很确定他们总是使用 id、lastname、firstname 和 age。特别是因为你甚至不能花时间更改列名
      • SQL 是一种用于查询数据库的语言。因此,“如果它是 SQL”是一个没有意义的语句。您可能想说的是“MS-SQL”,它与“SQL”不同。
      • 这怎么能得到支持? w3schools.com/sql/sql_autoincrement.asp
      猜你喜欢
      • 2014-02-21
      • 2021-12-08
      • 2011-06-10
      • 2021-01-07
      • 1970-01-01
      • 2013-07-12
      • 2020-11-16
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多