Мне интересно, как транзакции ведут себя, когда различные команды (Begin / Start Transaction, Commit и т. Д.) Передаются через различные курсоры / соединения. То есть, какой из следующих наборов операторов фактически вводит одну транзакцию и фиксирует ее в конце?
connection = pyodbc.connect(...)
cursor = connection.cursor()
cursor.execute('START TRANSACTION')
cursor.execute('INSERT ....')
cursor.execute('COMMIT')
против
connection = pyodbc.connect(...)
connection.cursor().execute('START TRANSACTION')
connection.cursor().execute('INSERT ....')
connection.cursor().execute('COMMIT')
против
pyodbc.connect(...).cursor().execute('START TRANSACTION')
pyodbc.connect(...).cursor().execute('INSERT ....')
pyodbc.connect(...).cursor().execute('COMMIT')
(На практике эти команды распределены по моему коду, и я пытаюсь выяснить, на каких уровнях вводить синглтоны)
Конечно, я в некоторой степени могу это выяснить, "попробовав", но я предпочитаю несколько более авторитетный ответ, так что я знаю, что с этого момента ничего не сломается.
Я использую API базы данных Python , хотя я полагаю, что этот вопрос не обязательно относится к Python.
Я могу представить (хотя я надеюсь на обратное), что этот вопрос специфичен для БД. Для чего это стоит: мы используем MsSQL Server 2000.