terça-feira, 11 de setembro de 2007

Integridade referencial MySQL

Olá, como faz muito tempo que eu nem dou as caras por aqui e ninguém conhece ainda esse blog (será que um dia conhecerás?), estou colocando um pequeno exemplo de integridade referencial no MySQL 5.

Lembrando que para isso ser possível deve ser usado o tipo de tabela InnoDB. As tabelas do tipo MyISAM não suportam esse recurso.

CREATE TABLE carro (
    id int not null auto_increment,
    marca varchar(25) not null,
    modelo varchar(25) not null,
    ano_fab date not null,
    ano_mod date not null,
    primary key(id)
) engine=InnoDB;

CREATE TABLE carro_acessorios (
    carro_id int not null,
    descricao varchar(150) not null,
    preco decimal(10,2) not null,
    key(carro_id),
    foreign key (carro_id) references carro (id) on delete cascade
) engine=InnoDB;

Nesse exemplo temos a tabela de carros e uma tabela de acessórios que esse carro possui. Se o registro do carro for apagado, os registros de acessórios também serão.

Vamos analisar a linha responsável por isso:

  • foreign key (carro_id)...: Aqui está sendo definido qual é o campo da tabela que será referenciado.
  • ...references carro (id)...: Aqui está sendo definido que está se referenciando ao campo 'id' da tabela carro.
  • ...on delete cascade: E por fim se o campo no qual ele está fazendo referência for apagado, ele é apagado também.

Bom por enquanto é isso, conforme for eu vou colocando mais uns negócios aí! rsrs
Para maiores informações sobre integridade referencial no MySQL acesse: http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html

t+

Nenhum comentário: