PostgreSQL创建带外键的Order表报错,请求技术协助
PostgreSQL创建Order表语法错误解决方案
错误原因
Order是PostgreSQL的保留关键字,直接用作表名会触发语法错误。
解决方法
方法1:用双引号包裹表名
若需保留Order作为表名,需用双引号括起(此时表名区分大小写,后续操作需保持一致):
CREATE TABLE "Order" ( ORDID SERIAL NOT NULL, CUSTID INT, CATID INT, Qty INTEGER, OrderDate TIMESTAMP, SubTotal NUMERIC(4,2), PRIMARY KEY (ORDID, CUSTID, CATID), FOREIGN KEY (CUSTID) REFERENCES Customer (CUSTID), FOREIGN KEY (CATID) REFERENCES Catalog (CATID) );
方法2:修改表名为非关键字(推荐)
将表名改为非保留关键字,比如Orders,避免后续操作的潜在问题:
CREATE TABLE Orders ( ORDID SERIAL NOT NULL, CUSTID INT, CATID INT, Qty INTEGER, OrderDate TIMESTAMP, SubTotal NUMERIC(4,2), PRIMARY KEY (ORDID, CUSTID, CATID), FOREIGN KEY (CUSTID) REFERENCES Customer (CUSTID), FOREIGN KEY (CATID) REFERENCES Catalog (CATID) );
补充说明
- 尽量避免使用PostgreSQL保留关键字作为表、列等数据库对象的名称
- 附带ERD示意图:

内容的提问来源于stack exchange,提问作者anwarma
相关产品推荐
相关产品推荐

