Visa ett inlägg
Oläst 2015-09-02, 16:38 #10
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av spyvingen Visa inlägg
You lost me at MyISAM och InnoDB

Jag vill gärna ha en så enkel lösning som möjligt men som klarar av att göra det jag vill.
Jag vill alltid visa förskaste datan men jag vill inte ha den uppdelad om det är så att jag hämtar sidan samtidigt som jag öppnar databasen.

Hur gör man i mysql för att lägga in flera samtidigt?
Ska jag göra flera sqlkommandon och köra in som en enda körning eller måste man tänka på något speciellt.

Är lite noob som ni förstår.
Om jag ska skicka in många samtidigt ska man separera rader med något tecken eller liknande räcker det att göra så här?
Kod:
SQL = "delete from MyTable where field1 = 'XXX'; " & _
      "INSERT INTO MyTable (Field1, Field2) VALUES ('name1', 1);" & _
      "INSERT INTO MyTable (Field1, Field2) VALUES ('name2', 2);"
Kommer detta då gör att allt kommer in på samma gång och om clienten skulle uppdatera så får den snällt vänta till det är klart?

EDIT :
Hittade även detta
Kod:
INSERT 
  INTO Table ( Col1, Col2, Col3 ) 
  VALUES
    ( Value1, Value2, Value3 ), 
    ( Value4, Value5, Value6 ), 
    ( Value7, Value8, Value9 )
Skulle kanske vara ett ännu bättre alternativ?
Det lättaste vore att se till att tabellen är av typen InnoDB (förutsatt att du använder vanilla MySQL, annars kan den heta annorlunda men ändå i princip vara samma motor). Isåfall startar du en transaktion innan du kör din delete query, och avslutar den efter du är klar med dina inserts. På så sätt kommer dina läsningar av datan alltid få senaste avslutade uppdateringen oavsett om din uppdatering precis har tagit bort massa rader och ännu inte hunnit lägga in något så kommer det synas först när transaktionen är avslutad (committad).

Byt till InnoDB:
Kod:
ALTER TABLE table_name ENGINE=InnoDB;
Uppdatering pseudo-kod (använder du verkligen VB!?!):
Kod:
Db->beginTransaction()
// Alla db queries
Db->commitTransaction()
Därefter syns resultatet inte förräns allt mellan begin och commit är färdigt, under tiden kommer det (normalt sett) den uppdaterade datan endast vara synlig för processen/transaktionen själv.
Clarence är inte uppkopplad   Svara med citatSvara med citat