MySQL log

0

Jeśli widzę w logu SQLa (query log) coś takiego:

		 1418 Query	SET autocommit=0
		 1418 Query	insert into brand (name) values ('Refee')
		 1418 Query	insert into brand (name) values ('wWww')
		 1418 Query	commit
		 1418 Query	SET autocommit=1

to znaczy, że powyższe zostało wykonane w obrębie jednej transakcji? Dlaczego nie ma begin transaction itp?

0

To znaczy, że najpierw został wyłączony autocommit, zrobione zostały 2 inserty i zatwierdzone commitem, następnie został włączony autocommit. autocommit jest ustawiany na sesję. więcej tu: https://dev.mysql.com/doc/refman/5.7/en/commit.html

0
Panczo napisał(a):

To znaczy, że najpierw został wyłączony autocommit, zrobione zostały 2 inserty i zatwierdzone commitem, następnie został włączony autocommit. autocommit jest ustawiany na sesję. więcej tu: https://dev.mysql.com/doc/refman/5.7/en/commit.html

Czyli z angielskiego na nasze jesli autocommit==0 to wszystko co przed commit jest transakcja?

Jak rozumiem selecty tez moga byc w transakcjach?

0

autocommit jest niezależne od Begin transaction, ale nie jestem specem od mysql i to wszystko zależy od tego jaka jest tabela brand bo jeżeli MyISAM to tu jest prosto, nie mowy o żadnej transakcji.

Dla InnoDB jeżeli ustawisz autocommit=0 to sesja będzie miała otwartą transakcję dopóki nie zrobisz commita, jeżeli podczas sesji nie będzie commita i zostanie ona zakończona to będzie robiony rollback. Czyli wszystko przed commit jest transakcją.

Jeżeli autocommit=1 to w ramach sesji możesz zrobić wiele transakcji poprzez START TRANSACTION lub BEGIN.

Selecty też mogą być w transakcji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1