Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bdexterholland

Erro 1064 ao criar foreign Key

Recommended Posts

Olá,

 

não tenho muita esperiência com foreign keys e estou estudando para mudar o quadro. O fato é que o MySQL está acusando um 1064 em uma tabela mimnha:

Tabela com erro:

CREATE TABLE ces_units (
  unt_code INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  unt_abb VARCHAR(3) NOT NULL,
  unt_label VARCHAR(20) NOT NULL,
  unt_user INT NOT NULL DEFAULT 0,

  INDEX (unt_code),

  FOREIGN KEY unt_user_FK
    REFERENCES ces_users(usu_code)
    ON DELETE SET DEFAULT
)ENGINE=InnoDB;

Tabela referenciada pela chave estrangeira:

CREATE TABLE ces_users (
  usu_code INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  usu_login  VARCHAR(20) NOT NULL,
  usu_passwd VARCHAR(32) NOT NULL,
  usu_nome VARCHAR(60) NOT NULL DEFAULT 'Não Definido',
  usu_sector INT NOT NULL DEFAULT 0,
  usu_last INT NOT NULL DEFAULT 0
)ENGINE=InnoDB;

Mensagem de erro no QueryBrowser:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES ces_users(usu_code)
    ON DELETE SET DEFAULT
)ENGINE=InnoDB' at line 10

Dúvida em outra questão: Como definir um valor padrão em uma FK caso o registro pai seja excluido de uma tabela? Pelo que lí, o MySQL não aceita o SET DEFAULT como eu coloquei na DDL acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE ces_units (
  unt_code INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  unt_abb VARCHAR(3) NOT NULL,
  unt_label VARCHAR(20) NOT NULL,
  unt_user INT NOT NULL DEFAULT 0,

  INDEX (unt_code),

  FOREIGN KEY unt_user_FK(unt_user)
    REFERENCES ces_users(usu_code)
    ON DELETE SET DEFAULT
)ENGINE=InnoDB;

faltou dizer qual coluna compoe a FK

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE ces_units (
  unt_code INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  unt_abb VARCHAR(3) NOT NULL,
  unt_label VARCHAR(20) NOT NULL,
  unt_user INT NOT NULL DEFAULT 0,

  INDEX (unt_code),

  FOREIGN KEY unt_user_FK(unt_user)
    REFERENCES ces_users(usu_code)
    ON DELETE SET DEFAULT
)ENGINE=InnoDB;

faltou dizer qual coluna compoe a FK

 

Putz! que bobeira minha!

 

Bom, e com relação ao SET DEFAULT da Foreign Key, eu estava lendo algumas coisas sobre este ponto e ví que o MySQL não aceita isto. Isto procede? Se procede, como definir um valor padrão em caso de exclusào?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.