Различаются ли результаты подготовленных операторов в зависимости от того, где они инициализируются?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Различаются ли результаты подготовленных операторов в зависимости от того, где они инициализируются?

Сообщение Anonymous »

Ожидается ли, что запросы подготовленных операторов будут (или не будут) учитывать незафиксированные изменения при запросе, в зависимости от того, подготовлен ли оператор в том же соединении, что и транзакция?
Например:
// Open, prepare statement, close
sqlite3* db = nullptr;
sqlite3_open(filename, &db);
sqlite3_stmt* count_stmt = nullptr;
sqlite3_prepare_v3(db, "SELECT count(*) FROM names", -1, SQLITE_PREPARE_PERSISTENT, & count_stmt, nullptr));
sqlite3_close(db);
// Then open and start transaction and run prepared statement
sqlite3_open(filename, &db);
sqlite3_exec(db, "BEGIN TRANSACTION", nullptr, nullptr, &err);
sqlite3_exec(db, "INSERT INTO names (name) VALUES ('John')", nullptr, nullptr, &err);
sqlite3_step(count_stmt);
int count = sqlite3_column_int(count_stmt, 0);
sqlite3_close(db);
REQUIRE(count == 1); // fails because transaction wasn't commited

Но если я подготовлю оператор в том же соединении, которое используется транзакцией, результаты будут учитывать транзакцию перед ее фиксацией.
// Open, prepare statement, begin transaction and query
sqlite3* db = nullptr;
sqlite3_open(filename, &db);
sqlite3_stmt* count_stmt = nullptr;
sqlite3_prepare_v3(db, "SELECT count(*) FROM names", -1, SQLITE_PREPARE_PERSISTENT, & count_stmt, nullptr));
sqlite3_exec(db, "BEGIN TRANSACTION", nullptr, nullptr, &err);
sqlite3_exec(db, "INSERT INTO names (name) VALUES ('John')", nullptr, nullptr, &err);
sqlite3_step(count_stmt);
int count = sqlite3_column_int(count_stmt, 0);
sqlite3_close(db);
REQUIRE(count == 1); // passes even though transaction hasn't been committed yet


Подробнее здесь: https://stackoverflow.com/questions/786 ... nitialized
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Улучшение функции $karl "addToCart" в PHP с помощью подготовленных операторов
    Гость » » в форуме Php
    0 Ответы
    28 Просмотры
    Последнее сообщение Гость
  • Как избежать повторения кода с помощью подготовленных операторов PHP SQL?
    Гость » » в форуме Php
    0 Ответы
    39 Просмотры
    Последнее сообщение Гость
  • Проблема с обновлением данных с использованием подготовленных операторов PHP
    Anonymous » » в форуме Php
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как пакетно изменить множество процедурных запросов mysqli для подготовленных операторов?
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • IN (?,?) Точные значения подготовленных операторов mysqli
    Anonymous » » в форуме Php
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»