Kom ihåg mig?
Home Menu

Menu


Låsa upp en tabell i mysql så länge jag håller på att putta in data.

 
Ämnesverktyg Visningsalternativ
Oläst 2015-09-02, 15:51 #1
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
spyvingen spyvingen är inte uppkopplad
Medlem
 
Reg.datum: Jan 2006
Inlägg: 245
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?

Senast redigerad av spyvingen den 2015-09-02 klockan 15:57
spyvingen är inte uppkopplad   Svara med citatSvara med citat
Oläst 2015-09-02, 16:38 #2
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
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 08:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017