SQL Server | Create Table (On Delete Cascade)

diog0silva

Power Member
Boas.

Tenho uma BD simples, para gerir compras de produtos. A compra pode ser efectuado por um cliente ou por um funcionário. Eu quero que, ao apagar um registo da tabela funcionários, apague todas as compras que ele fez. O mesmo para o cliente.

Tenho o seguinte comando SQL, mas que não está a funcionar:

CREATE TABLE tab_compras (
cp_num INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
cp_clt_num INT,
cp_func_num INT,
cp_prod_cod INT NOT NULL,
cp_data DATE NOT NULL,
cp_quantidade INT NOT NULL,
FOREIGN KEY (cp_clt_num) REFERENCES tab_cliente (clt_num) ON DELETE CASCADE,
FOREIGN KEY (cp_func_num) REFERENCES tab_funcionario (func_num) ON DELETE CASCADE,
FOREIGN KEY (cp_prod_cod) REFERENCES tab_produto (prod_cod)
);

Se eu tirar um dos 'ON DELETE CASCADE', não dá erro. Alguém pode ajudar?
 
Experimentei de outra maneira, mas deu o mesmo erro:


CREATE TABLE tab_compras (
cp_num INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
cp_clt_num INT CONSTRAINT(cp_clt_num_fk) REFERENCES tab_cliente (clt_num) ON DELETE CASCADE,
cp_func_num INT CONSTRAINT (cp_func_num_fk) REFERENCES tab_funcionario (func_num) ON DELETE CASCADE,
cp_prod_cod INT CONSTRAINT (cp_prod_cod) REFERENCES tab_produto (prod_cod),
cp_data DATE NOT NULL,
cp_quantidade INT NOT NULL,
);


O erro que dá é este:


Msg 1785, Level 16, State 0, Line 1
Introducing FOREIGN KEY constraint 'cp_func_num_fk' on table 'tab_compras' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Msg 1750, Level 16, State 0, Line 1
Could not create constraint. See previous errors.
 
Back
Topo