ret = SQLExecDirect( stmt2, "BEGIN", SQL_NTS );
ret = SQLTables( stmt1 );
for( SQLFetch( stmt1 ); ; SQLFetch( stmt1 ) )
{
// get catalog
// get schema
// get table
ret = SQLExecDirect( stmt2, "IF NOT EXIST( SELECT * FROM WHERE name = AND schema = ) INSERT INTO VALUES( , , .... )", SQL_NTS );
}
ret = SQLExecDirect( stmt2, "COMMIT", SQL_NTS );
(проверка ошибок и подготовка опущены для ясности)
У меня есть пара вопросов относительно приведенного выше кода.
На период этой транзакции мне нужно, чтобы была заблокирована, чтобы невозможно было выполнить чтение/запись.
Как я могу это сделать?
Думаю, мне нужна одна транзакция. Правильно ли я делаю это с помощью запроса оператора INSERT?
Должен ли я сделать 2 запроса в транзакции, разделив проверку записи и фактическую вставку?
[code]ret = SQLExecDirect( stmt2, "BEGIN", SQL_NTS ); ret = SQLTables( stmt1 ); for( SQLFetch( stmt1 ); ; SQLFetch( stmt1 ) ) { // get catalog // get schema // get table ret = SQLExecDirect( stmt2, "IF NOT EXIST( SELECT * FROM WHERE name = AND schema = ) INSERT INTO VALUES( , , .... )", SQL_NTS ); } ret = SQLExecDirect( stmt2, "COMMIT", SQL_NTS ); [/code] (проверка ошибок и подготовка опущены для ясности) У меня есть пара вопросов относительно приведенного выше кода. [list] [*]На период этой транзакции мне нужно, чтобы была заблокирована, чтобы невозможно было выполнить чтение/запись. Как я могу это сделать?
[*]Думаю, мне нужна одна транзакция. Правильно ли я делаю это с помощью запроса оператора INSERT?
[*]Должен ли я сделать 2 запроса в транзакции, разделив проверку записи и фактическую вставку?