PostgreSQL 12.18 :: 错误:“NOT”第 3 行或附近的语法错误:,date_raised TIMESTAMPZ NOT NULL

问题描述 投票:0回答:1

尝试从命令行在 PostgreSQL 中创建表。下面是我尝试执行来创建表的代码。

执行创建表。

CREATE TABLE RISK_DETAILS(
RISK_DTL_ID SERIAL PRIMARY KEY, DATE_RAISED TIMESTAMP NOT NULL, PROJECT_NAME VARCHAR (50),
RAISED_BY VARCHAR(50), DESCIPTION VARCHAR(1024), CATEGORY VARCHAR(50), PROBABILITY NUMERIC, IMPACT_ID INTEGER, INITIAL_RISL_VALUE NUMERIC,
CURRENT_RISK_VALUE NUMERIC, I
MITIGATING_ACTION VARCHAR(500),
MITIGATING_PLANNED_DATE TIMESTAMP NOT NULL, CREATED_ON TIMESTAMP NOT NUMM DEFAULT NOW,
CONSTRAINT(FK_IMPACT_ID) FOREIGN KEY(IMPACT_ID) REFERENCES IMPACT_DROPDOWN( IMPACT_ID)
);

当我在命令行上运行此代码时,出现以下错误。

ERROR: syntax error at or near "NOT" LINE 3: DATE_RAISED TIMESTAMP NOT NULL

如果我删除导致错误的代码并再次执行,那么它会在项目名称字段中的 varchar 处抱怨。

postgresql
1个回答
0
投票

美化查询后,你就会看到问题出在哪里了。

  1. DESCRIPTION 列名称已更改为 DESCRIPTION

  2. INITIAL_RISL_VALUE 列名称已更改为 INITIAL_RISK_VALUE

  3. 删除 CURRENT_RISK_VALUE NUMERIC 和 MITIGATING_ACTION VARCHAR(500) 之间的“I”,

  4. NOT NUMM 更改为 NOT NULL

  5. 为 CREATED_ON 列设置默认值时,在 NOW 中添加了括号。

  6. 外键约束FK_IMPACT_ID是使用ALTER TABLE语法添加的。

结果查询如下

CREATE TABLE RISK_DETAILS(
  RISK_DTL_ID SERIAL PRIMARY KEY,
  DATE_RAISED TIMESTAMP NOT NULL,
  PROJECT_NAME VARCHAR(50),
  RAISED_BY VARCHAR(50),
  DESCRIPTION VARCHAR(1024),
  CATEGORY VARCHAR(50),
  PROBABILITY NUMERIC,
  IMPACT_ID INTEGER,
  INITIAL_RISK_VALUE NUMERIC,
  CURRENT_RISK_VALUE NUMERIC,
  MITIGATING_ACTION VARCHAR(500),
  MITIGATING_PLANNED_DATE TIMESTAMP NOT NULL,
  CREATED_ON TIMESTAMP NOT NULL DEFAULT NOW()
);

ALTER TABLE RISK_DETAILS
ADD CONSTRAINT FK_IMPACT_ID
FOREIGN KEY (IMPACT_ID)
REFERENCES IMPACT_DROPDOWN(IMPACT_ID);
© www.soinside.com 2019 - 2024. All rights reserved.