Gurzi Posted October 29, 2006 at 04:43 AM Report #60667 Posted October 29, 2006 at 04:43 AM 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 ?
Saco Posted October 29, 2006 at 09:09 AM Report #60685 Posted October 29, 2006 at 09:09 AM 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.
Gurzi Posted October 29, 2006 at 10:20 AM Author Report #60695 Posted October 29, 2006 at 10:20 AM Estás a falar verdade ? ... Bem me parecia.. grrr 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;
M6 Posted October 29, 2006 at 12:05 PM Report #60724 Posted October 29, 2006 at 12:05 PM 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."
Gurzi Posted October 29, 2006 at 05:35 PM Author Report #60785 Posted October 29, 2006 at 05:35 PM Pois, julgava que elas automaticamente eram inseridas, já resolvi a situação. gracias 😄 !
M6 Posted October 29, 2006 at 06:55 PM Report #60802 Posted October 29, 2006 at 06:55 PM Pois, julgava que elas automaticamente eram inseridas, já resolvi a situação. gracias 😄 ! Estamos cá para ajudar e sermos ajudados. 😄 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."
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now