MySQL'de iç içe işlemlere izin veriliyor mu?


Yanıtlar:


78

InnoDBdestekler SAVEPOINTS.

Aşağıdakileri yapabilirsiniz:

CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;

START TRANSACTION;

INSERT
INTO    t_test
VALUES  (1);

SELECT  *
FROM    t_test;

 id
---
  1

SAVEPOINT tran2;

INSERT
INTO    t_test
VALUES  (2);

SELECT  *
FROM    t_test;

 id
---
  1
  2

ROLLBACK TO tran2;

SELECT  *
FROM    t_test;

 id
---
  1

ROLLBACK;

SELECT  *
FROM    t_test;

 id
---

20
bu soru değildi, "kayıt noktaları" bir şeydir "iç içe işlem" desteği asıl soruydu. Bu bağlantıya
arod

1
@arod: Tek iş parçacıklı bir bağlamdaki farkı açıklar mısınız? Teşekkürler!
Quassnoi

@Quassnoi DB'ye verilen komutların farklı olduğuna inanıyorum, değil mi? Ben sanılabileceği
arod

2
@Quassnoi Sağladığım bağlantı, iç içe geçmiş işlemlerin artık desteklendiğini göstermekti. Şimdi, kayıt noktaları güçlüdür, ancak iç içe geçmiş BEGIN, COMMIT / ROLLBACK (programatik olarak konuşursak, komut açısından) ile aynı değiller, ancak "tek iş parçacıklı bir bağlamda" eşdeğer olduklarından oldukça emin görünüyorsunuz. Soruyu doğrudan ele almak niyetindeydim (3 yıl sonra :) ...
arod

12
@arod: Sağladığınız bağlantının MySQL ile hiçbir ilgisi olmadığını biliyorsunuz, değil mi?
Quassnoi

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.