[MySql] Insert in meerdere tabellen

Pagina: 1
Acties:

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
ik heb de volgende query geprobeerd:
code:
1
2
3
4
INSERT INTO word 
  JOIN occurance ON (word.Id = occurance.WordId) 
  (FirstOcc, Title) 
VALUES (9,'test');

Dat werkt niet... Had ik ook eigenlijk niet verwacht.
Is het mogelijk om in twee tabellen iets in te voegen?

tabelstructuur:
word(Id*,title)
occurance(wordId*,articleId*,titleCount);
* = primary key.

[edit]
Ik weet vooraf niet of het record in de tabel word voorkomt. Ik weet wel zeker dat het record in de tabel occurance NIET voorkomt.
Door een wijziging van mijn code kan ik echter wel garanderen dat het record in de tabel word voorkomt.

Localhost, sweet localhost


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Eerst invoegen in de word tabel, en vervolgens met de daarbij verkregen nieuwe ID (inserted_id oid) invoegen in de andere tabel.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Op woensdag 09 januari 2002 13:30 schreef Janoz het volgende:
Eerst invoegen in de word tabel, en vervolgens met de daarbij verkregen nieuwe ID (inserted_id oid) invoegen in de andere tabel.
Liefst doe ik het in een query. Anders moet ik ergen tussen de duizend en de tweeduizend queries uit gaan voeren... dat wordt wat veel... Ik weet dat het in veel andere DBMSsen wel kan MBV views.

Localhost, sweet localhost


Verwijderd

Inderdaad, dit zullen echt 2 queries worden, bij een join kan dat nooit gedaan worden, want dan krijg je van die leuke "Table is not updateble" meldingen ;)

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Is er even iemand bereid mee te denken? Ik denk namelijk dat het WEL mogelijk is mbv een tijdelijke tabel...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
word(Id*,title)
occurance(wordId*,articleId*,titleCount);
temp(word,wordId,articleId,titleCount,updateId);

Insert into temp (word,articleId,titleCount,updateId) VALUES
('De',1,1,$updateId),
('Het',1,1,$updateId),
('een',1,1,$updateId);

UPDATE temp JOIN word ON temp.word = word.title
SET temp.wordId = Word.Id
WHERE updateId=$updateId;

INSERT INTO occurance (wordId,articleId,titleCount)
SELECT (wordId,articleId,titleCount) 
FROM temp 
WHERE updateId=$updateId;

$updateId genereer ik vooraf met guid()... Zou dit kunnen werken? (ik ga het zelf ook proberen hoor...)

Localhost, sweet localhost


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

normaal gebruik je er procedures voor, Maarja.. "poor man's database" weer he (lees: MySQL)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Als ik de keus had stond hier echt wel ProgreSQL oid... Maar helaas.
mijn stage begeleider:
Constreents? Wazda

na mijn uitleg:
Veilige inserts? Hoe kan dat nou veilig zijn als je een foutmelding krijgt als het related record er niet is.?

na mijn uitleg:
Waarom moeilijk doen? Dit werkt toch?

Na wat andere argumenten:
Stoort prosiedjurs? Je kan toch alles in PHP doen? Die Supselekts ook hoor, kijk maar...

Localhost, sweet localhost


Verwijderd

Om maar even een oude koe uit de sloot te halen, ik ben wel benieuwd of die temporary table werkt met multiple-table inserts, of dat er een andere oplossing is om met een query in meerdere tables te inserten.

Verwijderd

Hmm... Echt niemand? (ik wilde geen nieuw topic aanmaken om UTFS te vermijden, maar dit valt ook niet echt op ;))

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is er gewoon niet in mysql.

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
Verwijderd schreef op 09 september 2002 @ 11:27:
Om maar even een oude koe uit de sloot te halen, ik ben wel benieuwd of die temporary table werkt met multiple-table inserts, of dat er een andere oplossing is om met een query in meerdere tables te inserten.
Da's wel een oude koe zeg... ;-) Ik zag plotseling een post van mij staan uit het jaar -1 (unsigned integer bouds exception...)

De oplossing met een tijdelijke tabel werkte in mijn situatie wel... Kijk maar in de zoekmachine van de dierenbescherming... Daar wordt 'ie toegepast...

Localhost, sweet localhost


  • paultjeb
  • Registratie: Augustus 2001
  • Niet online

paultjeb

Man, wat 'n boudel!

Waarom geen meerdere queries in één transactie?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025
paultje: zoals je hierboven leest, hebben we het hier over mysql. Transactions zijn daarin niet mogelijk, althans, doorgaans niet...

Localhost, sweet localhost


  • Genoil
  • Registratie: Maart 2000
  • Laatst online: 12-11-2023
hm toevallig...kom ik ook net achter dat dat niet werkt. kan dat met informix wel toevallig? schijnt dat m'n opdrachtgever dat ook heeft..zou wel relaxed zijn :7
En welke kunnen dat bijvoorbeeld nog meer?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Genoil schreef op 10 september 2002 @ 23:09:
kan dat met informix wel toevallig? schijnt dat m'n opdrachtgever dat ook heeft..zou wel relaxed zijn :7
Als er procedure en/of transactie support is wel ja.
En welke kunnen dat bijvoorbeeld nog meer?

Een heleboel.
oracle, db2, postgres, mssql etc
Pagina: 1