尝试从命令行在 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 处抱怨。
我
美化查询后,你就会看到问题出在哪里了。
DESCRIPTION 列名称已更改为 DESCRIPTION。
INITIAL_RISL_VALUE 列名称已更改为 INITIAL_RISK_VALUE。
删除 CURRENT_RISK_VALUE NUMERIC 和 MITIGATING_ACTION VARCHAR(500) 之间的“I”,
将 NOT NUMM 更改为 NOT NULL
为 CREATED_ON 列设置默认值时,在 NOW 中添加了括号。
外键约束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);