1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

SQL Server | Create Table (On Delete Cascade)

Discussão em 'Programação' iniciada por diog0silva, 3 de Maio de 2009. (Respostas: 1; Visualizações: 2927)

  1. diog0silva

    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?
     
  2. diog0silva

    diog0silva Power Member

    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.
     

Partilhar esta Página