2014-05-20 4 views
1

По соображениям производительности я хочу запустить SQLite-запрос, который удаляет строки И возвращает удаленные строки, поэтому мне не нужно запускать два отдельных запроса, когда я хочу знать, что удаляется. PostOgreSQL позволяет это использовать в конце что-то вроде «RETURNING *», но я не могу найти что-либо в документации для SQLite. Как мне это сделать?Возврат удаленных строк в SQLite

Это то, что у меня есть в настоящее время. В «% S» части заменяются входами, конечно (и я дезинфицировать входы):

"DELETE FROM '%s' WHERE (username1 = '%s' OR username2 = '%s') AND uid = '%s'" 

В случае, если это имеет значение, я программирования в C, используя код SQLite из sqlite.com.

ответ

1

Попробуйте псевдоним OLD. Это должно дать вам результаты, которые вам нужны.

+0

Как можно получить данные из триггера? –

+0

Вы должны написать свой sql так же, как обычно, в триггере, но вы можете вытащить старое значение, используя ключевое слово OLD.somename, где somename - это имя атрибута, который вы сейчас изменили. В Интернете есть несколько форумов, которые вы можете сделать, поставив старые и новые значения во временную таблицу, но это не нужно. Попробуйте ключевое слово OLD в вашем заявлении select. –

+0

И как только вы потянули эти данные, как бы триггер * вернул его? Операторы SELECT в триггере ничего не возвращают в приложение. –

1

SQLite не имеет такой функции.

Самый простой способ - запустить два отдельных запроса.

+0

Я действительно удивлен, что у меня его нет. – sudo

Смежные вопросы