2010-06-22 16 views
5

MySql belgelerini aradım ve hiçbir şey bulamadım. Ben Geri Alma tablo1 yapılan ekler ve tablo2MySql, birden çok tablo üzerinde bir sql işlemi geri alabilir mi?

Start Transaction; 

INSERT INTO Table1(field1,field2) VALUES (value1, value2); 

INSERT INTO Table2(field3,field4) VALUES (value3, value4); 

INSERT INTO Table3(field5,field6) VALUES (value5, value6); 

Rollback; 

GÜNCELLEME iptal görünmüyor ... Bu denedim: Tüm cevaplar için teşekkürler, ama 3 deyimi bir atar söylemeyi unuttum istisna (Kısıtlama İhlali). senaryonun başlangıcında bu ekleme

+1

Tüm bu tablolar için bir işlem motoru kullanıyor musunuz? – Paolo

+0

Evet .. InnoDB Engine –

cevap

1

MySql v5.1'in şu anki sürümünden itibaren, birden fazla tablo üzerinden geri almayı desteklemiyor ... Bu, yakın gelecekte değişebilir (umarım)!

+1

Bu v5.6 ile değişmiş mi acaba? –

2

deneyin: Varsayılan olarak

SET autocommit=0; 

, MySQL yoksa bunu söylemek sürece, her ifade sonrasında taahhüt yayınlayacaktır.

+0

Bunu denedim ... komut dosyasının ortasında bir hata oluştuğunda çalışmaz. –

+0

İyi bir fikir değil, çünkü kayıtları yanlışlıkla silerseniz - işlemi geri alamazsınız. –

+0

start transaction set otomatik olarak otomatik kapanır. –

8

Evet, ancak yalnızca işlemleri destekleyen tablolar için. senin tablolar uyumlu olup olmadığını kontrol etmek için, bunlardan herhangi MyISAM iseler, işlem uyumlu olmayan bu

SELECT table_name 
    , engine 
    FROM information_schema.tables t 
WHERE t.table_name IN('Table1','Table2','Table3'); 

yapmak. Sen InnoDB

ALTER TABLE [TableName] ENGINE=InnoDB; 

Fakat dikkat hepsini değiştirmeniz gerekir - MyISAM böyle fulltext aramaları gibi InnoDB'nin değil bazı özelliklerini destekler.

İlgili konular