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