Alguma versão do mysql suporta trasações?
Como faço para criar chaves estrangeiras?
Como deletar dados em varios tabelas presas por uma chave estrangeira?
Vale apena usar a versão 5.0 beta do mysql?
Valeu Galera!
Alguma versão do mysql suporta trasações?
Como faço para criar chaves estrangeiras?
Como deletar dados em varios tabelas presas por uma chave estrangeira?
Vale apena usar a versão 5.0 beta do mysql?
Valeu Galera!
Para aceitar transações vc deve criar a tabela com a opção de InnoDB.
MySql não tem integridade referencial.
Se vale a pena, vai depender da sua necessidade… blz?
Com innoDB também temos integridade referencial!
Só que precisamos definir com ALTER TABLE … ADD CONSTRAINT … REFERENCES …;
Ola, com o uso de Innodb possivel trabalhar com integridade Referencial e ja tem ate uma ferramenta case muito boa,o dbdesigner, que vc encontra disponivel pra download em fabforce.net, uma excelente ferramenta, agiliza na definicao do seu banco de dados.
Estou usando o my-sql em um projeto, tb ainda nao tenho muuuuuuuuuuito conhecimento dele mas por enquanto a ferramenta e o banco tem dado conta do recado.
duvidas: ton_hotmail.com
[quote=“spier”]Com innoDB também temos integridade referencial!
Só que precisamos definir com ALTER TABLE … ADD CONSTRAINT … REFERENCES …;[/quote]
Pelo que sei InnoDB não implementa integridade referêncial…
Olha ai:
Você esperava, por integridade referencial, uma cláusula tipo
ALTER TABLE filho ADD REFERENTIAL INTEGRITY pai(idpai) ???
O que você entende por Integridade Referencial, ou RI, como é vulgarmente citada por aí?
Para mim, em vinte anos de batalha, RI significa que, se temos um filho, NECESSARIAMENTE temos que ter um pai, e, não só isso, temos que vincular este filh ao respectivo pai!
Posso estar ultrapassado nos meus conhecimentos, mas a maneira que implementamos isso em bancos de dados é com Foreign Keys (chulamente conhecidas com chaves externas).
Agora, para alcançarmos o conceito de RI, não basta simplesmente duplicarmos na tabela filho a PK da tabela pai;
Precisamos limitar o conteúdo desta FK (foreign key) da tabela pai a um valor existente nela.
Ora, desde que o modelo relacional foi criado, a mais de cinquenta anos, e, enquanto não surgir um banco de dados OO, isso é feito com a criação de uma restrição (constraint) que limita uma coluna ao conteúdo de outra.
Por exemplo, assumindo MySql 3.23 ou maior + innodb, com o exemplo pais e filhos podemos fazer o seguinte exercício:
CREATE TABLE pai (
id char(4) PRIMARY KEY,
nome VARCHAR(50) NOT NULL);
CREATE TABLE filho (
nome VARCHAR(50) PRIMARY KEY,
idPai CHAR(4) NOT NULL);
(índice na FK é exigência do MySQL, não da ANSI)
ALTER TABLE filho ADD INDEX papai (idPai);
ALTER TABLE filho ADD CONSTRAINT paternidade (idPai)
REFERENCES pai (id);
INSERT INTO pai VALUES (‘1’, ‘Jevateco’)
INSERT INTO filho VALUES(‘Jevateco JR’, ‘1’);
INSERT INTO filho VALUES(‘Javateca’, ‘2’);
Pergunto:
Executando as sql acima, o que acontece quando quisermos referenciar (de “Referencial”) a menina ‘Javateca’ com o pai indicado pelo id=‘2’, que não existe?
Com as tabelas implementadas acima, com certeza, não será possível!
Ops, corrigindo,
onde se lê Jeveteco, leia-se Javateco (desculpe pela falha);
e onde se lê
ALTER TABLE filho ADD CONSTRAINT paternidade (idPai)
REFERENCES pai (id);
leiam
ALTER TABLE filho ADD CONSTRAINT FOREIGN KEY paternidade (idPai)
REFERENCES pai (id);
PS: encontrarão uma descrição bem mais “técnica” em
http://dev.mysql.com/doc/mysql/en/example-Foreign_keys.html
E