webForumDet fria alternativet

Hur uppdatera flera tabeller samtidigt i MySQL?

Databaser & SQL

7 svar · 500 visningar · startad av Ken

Medlem sedan mars 2004252 inlägg
Frågan#1

Kan man uppdatera flera tabeller med samma värden samtidigt med en kommandorad ifall dessa tabeller har samma struktrur?

Ex.

mysql> desc depart1; 
+---------+--------------+------+-----+---------+----------------+ 
| Field   | Type         | Null | Key | Default | Extra          | 
+---------+--------------+------+-----+---------+----------------+ 
| id      | int(11)      |      | PRI | NULL    | auto_increment | 
| section | varchar(100) | YES  |     | NULL    |                | 
| number  | int(11)      | YES  |     | NULL    |                | 
+---------+--------------+------+-----+---------+----------------+ 
3 rows in set (0.11 sec)
mysql> desc depart2; 
+---------+--------------+------+-----+---------+----------------+ 
| Field   | Type         | Null | Key | Default | Extra          | 
+---------+--------------+------+-----+---------+----------------+ 
| id      | int(11)      |      | PRI | NULL    | auto_increment | 
| section | varchar(100) | YES  |     | NULL    |                | 
| number  | int(11)      | YES  |     | NULL    |                | 
+---------+--------------+------+-----+---------+----------------+ 
3 rows in set (0.11 sec)
Medlem sedan dec. 200012 464 inlägg
#2

Jo Mysql har någon udda syntax för det. Läs manualen. Jag skulle dock inte rekommendera att använda den då det finns transaktionshantering för just detta, att man vill utföra flera operationer och betrakta dom som en enhet.

Huruvida tabellerna har samma definition är oväsentligt i detta sammanhang men däremot så är det generellt ett tecken på en suspekt datamodell.

Flyttas från databashanterare.

Medlem sedan mars 2004252 inlägg
#3

Kan nån berätta vad transaktionshantering är för något och ge nåt exempel?

Medlem sedan dec. 19996 522 inlägg
#4

http://www.susning.nu/Transaktion

2. Databaser
En term inom databasvetenskapen för att beskriva en sekvens operationer som antingen utförs eller misslyckas kollektivt. Om en operation misslyckas ska alla operationer i sekvensen som hittills har utförts reversera?s (så att det verkar som om ingenting har hänt) och sedan måste databasystem?et visa att transaktionen i helhet misslyckats (eller försöka igen - en strategi som förenklar men gör att en transaktion kan riskera att [hänga sig]?).

Låt oss säga du har 2 inserts och 1 update som är beroende av varandra. Om någon av dem misslyckas vill du troligtvis inte att de andra två ska lyckas för du vill ju ha dataintegritet etc. Då vill du att de andra två ska avbrytas, och om de redan är gjorda rollbackas.

I transaktioner har du denna möjlighet, du kan kolla efter fel, har fel uppståt rollbacka (avbryt och återställ till ursprungsläget), annars commita transaktionen och gör ändringarna i databasens tillstånd permanenta. Du kan också i transaktionen sätta ISOLATION LEVEL, vilket hanterar hur du låser dina tabeller, hur isolerad du vill att din transaktion ska vara för att unvikda problem som dirty reads, phantoms etc.

Mer om det på
http://www.firstsql.com/tutor5.htm

Man brukar säga att en transaktion ska följa/vara ACID

Atomicity (Atomär) - Odelbar. Antingen genomför alls saker i transaktionen eller inga, redan gjorda återställs

Consistency (konsistensbevarande) - Efter transaktionen måste intregritetsvillkort vara uppfylda

Isolation (Isolerad) - Varje transaktion skall utföras självständigt , utförda ändringar innan commit ska ej vara synliga för andra transaktioner

Durability (hållbara) - Ändringar som är gjorde efter en transaktion har commitat skall ej kunna försvinna från databasen av "slump". Det ska skrivas till disk även om ett strömavbrott eller hårddiskkrash uppstår etc.

Medlem sedan mars 2004252 inlägg
#5

En annan fråga
Hur visar man innehållet i fyra tabeller samtidigt i alfabetisk ordning?

Medlem sedan dec. 19996 522 inlägg
#6

Hur hör tabellerna ihop?

Medlem sedan mars 2004252 inlägg
#7

Det är fyra tabeller, vilka alla har en identisk struktur, som borde visas samtidigt i alfabetisk ordning. På det viset hör dom ihop!

Medlem sedan dec. 19996 522 inlägg
#8

Är det en distribuerad databas med horisontell fragmentering? Du kan lösa det med en union i alla fall

269 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
134 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)