postgresql 序列字段/自动递增

q5iwbnjs  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(3)|浏览(167)

任务表明:
创建一个名为automagic的表,其中包含以下字段:
ID字段是一个自动递增的序列字段。名称字段最多允许32个字符,但不能超过这个字段是必需的。高度字段是必需的浮点数。我的代码是:

CREATE TABLE automatic (
    id SERIAL PRIMARY KEY NOT NULL, 
    name CHAR (32), 
    height numeric);

然而,自我评定者回答称,预期无高度的插入失败,但未失败。
在那之后,我试了这个

CREATE TABLE automatic (
    id int not null auto_increment primary key, 
    name varchar(32) not null, 
    height float not null);

而且得到了
错误:“auto_increment”处或附近的语法错误
第1行:创建表自动创建(ID为int,不为空,自动递增主值...
SQL状态:42601
字符数:41

p1iqtdky

p1iqtdky1#

你可以试试这样的方法:

CREATE TABLE automagic (
  id int NOT NULL,
  name varchar(32) NOT NULL,
  height float NOT NULL
);

CREATE SEQUENCE automagic_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

ALTER SEQUENCE automagic_id_seq OWNED BY automagic.id;

ALTER TABLE ONLY automagic ALTER COLUMN id SET DEFAULT nextval('automagic_id_seq'::regclass);

编辑:

正如@a_horse_with_no_name所指出的那样,这样做更好:

CREATE TABLE automagic (
  id int GENERATED ALWAYS AS IDENTITY,
  name varchar(32) NOT NULL,
  height float NOT NULL
);
csbfibhn

csbfibhn2#

试试这个

CREATE TABLE automagic (
id SERIAL,
name VARCHAR(32) NOT NULL,
height FLOAT NOT NULL)
a64a0gku

a64a0gku3#

使用主键。

CREATE TABLE automagic (
id SERIAL primary key,
name VARCHAR(32) NOT NULL,
height FLOAT NOT NULL)

相关问题