Jump to content

Problemas


Gurzi

Recommended Posts

Boas..

3 tabelas no qual uma delas é o resultado de uma ligação de muitos para muitos..

essa 3º tabela recebe a chave primária que se vai tornar em chave estrangeira de cada uma das outras tabelas..

ora quando eu no php faço um insert dos valores das outras tabelas esta 3 tabela nao devia ficar preenxida automaticamente ?

do género eu paço IDLIVRO e IDAUTOR para AUTORIA , visto serem auto increment quando eu acrescentava um livro nao era suposto passar a existir um registo na autoria ?

Link to comment
Share on other sites

Ora vamos cá ver ser eu percebi a tua dúvida...

Tu tens digamos uma tabela AUTOR, outra tabela LIVRO e outra ainda AUTORIA, e querias que quando inserisses um autor e um livro eles fossem automaticamente inseridos na tabela autoria?

Tanto quanto sei, o MySql não faz isso. O facto de serem chaves estrangeiras só faz com que o MySql não permita inserires IDLIVROs e IDAUTORs na tabela AUTORIA que não existam nas respectivas tabelas. Podes é criar uma Stored Procedure que recebe os campos das tabelas AUTOR e LIVRO e faz o insert nas 3 tabelas.

O auto-increment só é útil para criar automaticamente o IDLIVRO e o IDAUTOR cada vez que inseres um livro e um autor. Exemplo: supondo que tens as tabelas vazias, fazes um insert na tabela LIVRO (sem especificar o IDLIVRO) e ele cria esse livro com o IDLIVRO 1,  se a seguir inserires outro livro já vai ficar com o IDLIVRO 2, e por aí diante.

Link to comment
Share on other sites

Estás a falar verdade ? ...

Bem me parecia.. grrr  :wallbash: Ontem foi noitada até ás 6 da manhã á procura disto, enfim !?

Issso da procedure era porreiro , podes me ensinar como faço ??

E se não for com procedure, teria que inserir manualmente os IDS dos LIvros e Autores na Autoria certo ?

Deixo aqui o código que utilizei para criar as 3 tabelas

CREATE TABLE Livro ( TITULO VARCHAR(50) , Edicao INT(5) , Editora VARCHAR(40) , Paginas INT(10), IDLivro INT(5) NOT NULL AUTO_INCREMENT, Ano INT(5), Descricao VARCHAR(255),
PRIMARY KEY(IDLivro)) TYPE=INNODB;

CREATE TABLE Autor ( Nome VARCHAR(50), Apelido VARCHAR(50), IDAutor INT(5) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(IDAutor)) TYPE=INNODB;

CREATE TABLE Autoria( IDAutoria INT NOT NULL AUTO_INCREMENT,
Autoria_Livro INT NOT NULL,
Autoria_Autor INT NOT NULL,
PRIMARY KEY(IDAutoria),
INDEX(Autoria_Livro),
FOREIGN KEY(Autoria_Livro)
REFERENCES Livro(IDLivro)
ON UPDATE CASCADE ON DELETE RESTRICT,
INDEX(Autoria_Autor),
FOREIGN KEY(Autoria_Autor)
REFERENCES Autor(IDAutor)) TYPE=INNODB;
Link to comment
Share on other sites

Gurzi, a tabela de relações nunca é preenchida automaticamente. Repara que o MySQL (ou qualquer outro SGBD) não adivinha quais as relações que o utilizador da aplicação pretende.

O que tens de fazer é simples, seja por código a partir da aplicação ou num SP:

1. Inserir os dados nas tabelas que vão ser relacionadas.

2. Inserir as relações na tabela que efectua a relação M:N.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.