Прежде всего извините за мой английский.
Я пытаюсь удалить / вставить несколько строк в таблицу MSSQL, но я не получаю ошибки, но это просто не работает. Но когда я делаю оператор SELECT, он тоже работает.
$dbhandle = mssql_connect("SERVERNAME", "username", "password") or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db("myDB", $dbhandle) or die("Couldn't open database $myDB");
mssql_query("DELETE dbo.import");
Сервер SQL INSTANCE установлен на моем локальном компьютере, и я являюсь администратором этого SQL Server, но веб-сервер находится на другом ПК.
Я создал пользователя, и я назначил роль db_owner
Когда я пытаюсь выполнить тот же запрос на другом сервере SQL, он работает.
Я также попробовал:
$dbhandle = mssql_connect("SERVERNAME", "username", "password") or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db("myDB", $dbhandle) or die("Couldn't open database $myDB");
$result = mssql_query("DELETE dbo.import; SELECT * FROM dbo.import;");
$sqlRows = array();
while($row = mssql_fetch_array($result))
{
$sqlRows[] = $row;
}
echo sizeof($sqlRows);
и эхо возвращает 0, но когда я проверяю из SSMS, записи все еще там.
DELETE SCHEMA.TABLE; SELECT * FROM SCHEMA.TABLE;
возвращает 0 строк И тогда я пытаюсь снова
SELECT * FROM dbo.import;
возвращает 26 строк
Решение было не совершенной транзакцией. Смотрите комментарии …
Мой ответ не совсем к сути … Я должен признать, что я никогда не использовал DELETE
без FROM
, но это работает очевидно:
create table #tbl(id int);
insert into #tbl values(1),(2);
select * from #tbl;
delete #tbl;
select * from #tbl;
drop table #tbl;
Я дал ответ там из-за комментариев …
Хорошо, я только что нашел ответ в Интернете.
Был откат, как уже упоминалось Shnugo и добавление SET IMPLICIT_TRANSACTIONS OFF;
в начале запроса это решит проблему.
Спасибо