Size: a a a

DBA - русскоговорящее сообщество

2021 February 03

RE

R i n E l l e i in DBA - русскоговорящее сообщество
народ, хелп
народ, кто-то в бд шарит?
вопрос:
select @@TRANCOUNT as "Колличество транзакций";
SET IMPLICIT_TRANSACTIONS ON;
--begin tran
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович7', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
--commit Tran;--сохранить
--ROLLBACK;--отменить
select @@TRANCOUNT as "Количество транзакций";

--Явная транзакция в автоматическом режиме выполнения транзакций
select @@TRANCOUNT as "количество транзакций";
SET IMPLICIT_TRANSACTIONS OFF;
 begin tran
   select @@TRANCOUNT as "количество транзакций";
   INSERT INTO students(id, FIO, address, Bday, Phone)
   VALUES(7, 'Иванов Иван Иванович8', 'г.Тюмень, Республики, 102-15', '10/10/1995', '9324529');
   select @@TRANCOUNT as "количество транзакций";
 commit Tran;--сохранить
ROLLBACK;--отменить
select @@TRANCOUNT as "количество транзакций";
как перевести эту неявную транзакцию в явную?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
народ, хелп
народ, кто-то в бд шарит?
вопрос:
select @@TRANCOUNT as "Колличество транзакций";
SET IMPLICIT_TRANSACTIONS ON;
--begin tran
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович7', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
--commit Tran;--сохранить
--ROLLBACK;--отменить
select @@TRANCOUNT as "Количество транзакций";

--Явная транзакция в автоматическом режиме выполнения транзакций
select @@TRANCOUNT as "количество транзакций";
SET IMPLICIT_TRANSACTIONS OFF;
 begin tran
   select @@TRANCOUNT as "количество транзакций";
   INSERT INTO students(id, FIO, address, Bday, Phone)
   VALUES(7, 'Иванов Иван Иванович8', 'г.Тюмень, Республики, 102-15', '10/10/1995', '9324529');
   select @@TRANCOUNT as "количество транзакций";
 commit Tran;--сохранить
ROLLBACK;--отменить
select @@TRANCOUNT as "количество транзакций";
как перевести эту неявную транзакцию в явную?
begin transaction
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
Ilia Zviagin
begin transaction
что с ней?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
что с ней?
Добавить надо
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
SET IMPLICIT_TRANSACTIONS ON -> OFF заменить надо?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
народ, хелп
народ, кто-то в бд шарит?
вопрос:
select @@TRANCOUNT as "Колличество транзакций";
SET IMPLICIT_TRANSACTIONS ON;
--begin tran
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович7', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
--commit Tran;--сохранить
--ROLLBACK;--отменить
select @@TRANCOUNT as "Количество транзакций";

--Явная транзакция в автоматическом режиме выполнения транзакций
select @@TRANCOUNT as "количество транзакций";
SET IMPLICIT_TRANSACTIONS OFF;
 begin tran
   select @@TRANCOUNT as "количество транзакций";
   INSERT INTO students(id, FIO, address, Bday, Phone)
   VALUES(7, 'Иванов Иван Иванович8', 'г.Тюмень, Республики, 102-15', '10/10/1995', '9324529');
   select @@TRANCOUNT as "количество транзакций";
 commit Tran;--сохранить
ROLLBACK;--отменить
select @@TRANCOUNT as "количество транзакций";
как перевести эту неявную транзакцию в явную?
select @@TRANCOUNT as "Колличество транзакций"; -- Это НЕ количество транзакций
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
и можете вкратце, но понятно написать отличие явной от неявной
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
SET IMPLICIT_TRANSACTIONS ON -> OFF заменить надо?
Да это не обязательно
источник

К

Какой-то Хмырь... in DBA - русскоговорящее сообщество
R i n E l l e i
и можете вкратце, но понятно написать отличие явной от неявной
явная начинается с begin transaction, неявная начинается сиквелом автоматом при использовании:
ALTER TABLE
FETCH
REVOKE
GRANT
SELECT (с исключениями)
CREATE
INSERT
TRUNCATE TABLE
DELETE
OPEN
UPDATE
DROP

а дальше, при implicit on, тебе нужно будет а вручную писать commit или  rollback, а при implicit off будет автокоммит.


https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-ver15
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
и можете вкратце, но понятно написать отличие явной от неявной
Явная :

begin transaction -- начал транзакцию.
делаешь делаешь

commit -- закончил.
(или rollback -- отменил)

Неявная :

транзакции нет ....

Выполняешь ЛЮБОЙ оператор DML (SELECT INSERT UPDATE DELETE) -- транзакция началась, сама.

делаешь, делаешь ...

commit -- закончил.
(или rollback -- отменил)
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Какой-то Хмырь
явная начинается с begin transaction, неявная начинается сиквелом автоматом при использовании:
ALTER TABLE
FETCH
REVOKE
GRANT
SELECT (с исключениями)
CREATE
INSERT
TRUNCATE TABLE
DELETE
OPEN
UPDATE
DROP

а дальше, при implicit on, тебе нужно будет а вручную писать commit или  rollback, а при implicit off будет автокоммит.


https://docs.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-ver15
Не, DDL не начинают транзакцию.
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
а если после SET IMPLICIT_TRANSACTION OFF;
написать insert... это что такое?
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
это вопрос препода
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
SET IMPLICIT_TRANSACTIONS OFF;
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович9', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
источник

К

Какой-то Хмырь... in DBA - русскоговорящее сообщество
Ilia Zviagin
Не, DDL не начинают транзакцию.
но в доке пишут

When ON, the system is in implicit transaction mode. This means that if @@TRANCOUNT = 0, any of the following Transact-SQL statements begins a new transaction. It is equivalent to an unseen BEGIN TRANSACTION being executed first:

ALTER TABLE

FETCH

REVOKE

BEGIN TRANSACTION

GRANT

SELECT (See exception below.)

CREATE

INSERT

TRUNCATE TABLE

DELETE

OPEN

UPDATE

DROP
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
R i n E l l e i
SET IMPLICIT_TRANSACTIONS OFF;
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович9', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
подскажите плиз
источник

К

Какой-то Хмырь... in DBA - русскоговорящее сообщество
R i n E l l e i
SET IMPLICIT_TRANSACTIONS OFF;
INSERT INTO students(id, FIO, address, Bday, Phone)
VALUES(6, 'Иванов Иван Иванович9', 'г.Тюмень, Республики, 102-17', '10/10/1997', '9324527');
ну считай INSERT - это транзакция. она автоматом будет либо закоммичена, либо зароллбэчена.

если за ней будут другие инструкции, то они будут выполнены в отдельных транзакциях.


при implicit ON он стартанёт транзакцию перед инсёртом, но коммитить или роллбэчить её не будет, пока ты это не напишешь. вроде так
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Какой-то Хмырь
но в доке пишут

When ON, the system is in implicit transaction mode. This means that if @@TRANCOUNT = 0, any of the following Transact-SQL statements begins a new transaction. It is equivalent to an unseen BEGIN TRANSACTION being executed first:

ALTER TABLE

FETCH

REVOKE

BEGIN TRANSACTION

GRANT

SELECT (See exception below.)

CREATE

INSERT

TRUNCATE TABLE

DELETE

OPEN

UPDATE

DROP
1) c чего ты решил, что у него MS SQLServer ?
2) Да, DDL в MSSQL начинают транзакцию, но САМИ ЖЕ ЕЁ И ЗАВЕРШАЮТ.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
R i n E l l e i
а если после SET IMPLICIT_TRANSACTION OFF;
написать insert... это что такое?
Будет транзакция на каждый оператор
источник

RE

R i n E l l e i in DBA - русскоговорящее сообщество
Ilia Zviagin
Будет транзакция на каждый оператор
благодарю!
источник