sql - 创建或修改具有组合主键的表,由它们的 3 个属性构成
问题描述
我正在尝试创建一个表,并将其具有的 3 个属性作为主键。
代码如下:
CREATE TABLE compra
(
dni_cli VARCHAR2(50),
cod_prod NUMBER(10) NOT NULL,
cantidad NUMBER (10),
CONSTRAINT pk_compra PRIMARY KEY (dni_cli, cod_prod, cantidad);
CONSTRAINT pelicula_codigo_prod_fg FOREIGN KEY (cod_prod) REFERENCES producto(cod_prod),
CONSTRAINT pelicula_codigo_cli_fg FOREIGN KEY (dni_cli) REFERENCES cliente(dni)
);
我还尝试先创建表,然后添加约束以创建组合 PRIMARY KEY 与更改表,但不起作用。
代码是这样的:
ALTER TABLE CONSTRAINT pk_compra PRIMARY KEY (dni_cli, cod_prod, cantidad);
解决方案
如果主键已经存在,则需要删除该键:
ALTER TABLE compra drop constraint pk_compra;
然后添加密钥:
ALTER TABLE compra add constraint pk_compra primary key (city_id, buildtime, time);
如果表中不存在主键,则只需使用第二个命令行。
同样正如@stickybit 指出的那样,您的表有错误。这是没有错误的代码:
CREATE TABLE compra (
dni_cli VARCHAR2(50),
cod_prod NUMBER(10) NOT NULL,
cantidad NUMBER (10),
CONSTRAINT pk_compra PRIMARY KEY (dni_cli,cod_prod,cantidad), --<<change here
CONSTRAINT pelicula_codigo_prod_fg FOREIGN KEY (cod_prod) REFERENCES producto(cod_prod),
CONSTRAINT pelicula_codigo_cli_fg FOREIGN KEY (dni_cli) REFERENCES cliente(dni));
推荐阅读
- pysimplegui - PySimpleGUI 上 sg.Text 中的变量
- django - Django 多表进行身份验证
- javascript - graphviz/d3 和 python http.server 的未捕获类型错误“this.node() is null”
- sql - SQLite 中 ALL 和 EVERY 的替代方案是什么?
- python - Python:理解函数中的 lambda 操作
- firebase - 如何修复可调用函数中的 Firebase CORS 错误?
- javascript - forEach 仅发布一维数组 javascript 中的最后一个条目
- java - 将 JSoup 编译为 Maven 依赖项的麻烦 - Java
- xml - Fulltext Xquery (Lucene/KWIC) 不适用于“标记”结果。eXist-db 错误?
- python - 使用 pandas 和 yfinance 计算变量时的关键错误消息