Синтаксическая ошибка PhpPgAdmin при создании View - PullRequest
1 голос
/ 30 июня 2010

Я пытаюсь создать представление в PhpPgAdmin (PostGreSQL db), которое имеет следующий оператор SQL:

DELETE FROM myTable WHERE myTable.error IS NULL;

PhpPgAdmin выдает мне следующую ошибку:

ОШИБКА: синтаксическая ошибка в или около "УДАЛИТЬ" в символ 59 В заявлении: СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ВИД «Схема1». «Удалить пустые ошибки» КАК УДАЛИТЬ ИЗ myTable ГДЕ myTable.error IS NULL;

Насколько я могу судить, этот оператор SQL действителен, и у меня есть права на удаление таблицы. Разве оператор DELETE не разрешен в представлениях? Есть идеи, что я делаю не так?

1 Ответ

4 голосов
/ 30 июня 2010

Представления используются для отображения данных только из операторов SELECT (обычно, когда SELECT сложен). Представления не могут содержать DELETES, UPDATES или INSERTS.

Возможно, вам нужна функция ?

РЕДАКТИРОВАТЬ: Как указывает OMG Ponies, вы можете иметь обновляемые представления, но в этом случае вы можете выполнить УДАЛЕНИЕ для существующего представления, а затем использовать ПРАВИЛО, чтобы переписать запрос как УДАЛИТЬ.

И, пожалуйста, не оборачивайте вызов функции, чтобы УДАЛИТЬ как побочный эффект в представлении. Это неожиданно, и Иисус стреляет в щенка каждый раз, когда это происходит.

...