Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 创建或修改具有组合主键的表,从其3个属性形成_Sql_Oracle - Fatal编程技术网

Sql 创建或修改具有组合主键的表,从其3个属性形成

Sql 创建或修改具有组合主键的表,从其3个属性形成,sql,oracle,Sql,Oracle,我正在尝试创建一个表,并将其具有的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 FO

我正在尝试创建一个表,并将其具有的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)
);
我还尝试先创建表,然后添加约束,以便使用alter table创建组合主键,但它不起作用

代码如下:

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));
CREATE TABLE compra(
dni_cli VARCHAR2(50),
cod_产品编号(10)不为空,
康蒂达数(10),

约束pk_compra主键(dni_cli,cod_prod,cantidad),--您使用什么数据库?Oracle sql developer。在
之后更改
…主键(dni_cli,cod_prod,cantidad)
。我尝试了这个方法,但不起作用。我收到一个错误,上面写着“为约束指定唯一的约束名称”,但我不知道开发这个的代码。@ManuelLucas,这有帮助吗?是的,很好!谢谢你的帮助!我必须删除主键,然后再次添加“ALTER TABLE add CONSTRAINT”