[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: INSERT с условием
rooor
Приветствую =)

Можно ли как-то вставить запись в БД по условию, без предварительной выборки, так сказать одним запросом?
Например, если в таблице меньше 10 строк, то можно записывать, если больше - нет.
sergeiss
Если использовать триггеры, то можно smile.gif

Правда, отказ от вставки внутри триггера в Мускуле гиморно делается. В Постгре с этим проще, причем намного проще wink.gif Но в любом случае только триггером можно решить такую задачу.
Но в любом случае внутри триггера будет делаться та самая выборка, которой ты хочешь избежать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
rooor
sergeiss
ясно, благодарю)
sergeiss
Кстати... Может быть и можно... Но выборка все равно будет нужна :)

Например, делаешь одно специальное поле, которое не может быть NULL. И при вставке делаешь выборку количества, результат записываешь в то самое поле... Но выборку количества делаешь внутри запроса на вставку

INSERT into table007
( name, control_val )
values
( 'Name',
case
when
(select count(*) from table007) > 10 then
NULL
else

1
end
)

Запрос не проверял, но должно сработать, я думаю.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
rooor
Выборка будет из той же таблицы, куда будем вставлять запись, она блокироваться не будет? На вставку вроде приоритет больше, чем на выборку, хотя хз, пойду проверю =)
rooor
Цитата
You can't specify target table 'tmp_table' for update in FROM clause

чё-то не алё
sergeiss
Цитата (rooor @ 30.06.2014 - 23:50)
чё-то не алё

Я тоже проверил... Да, не работает, зараза sad.gif Тогда и насчет триггера в Мускуле я уже не уверен. Но в Постгре уверен, т.к. делал там подобные "фокусы".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
Цитата
И при вставке делаешь выборку количества, результат записываешь в то самое поле...
Это такие же грабли замедленного действия, как и изобретение собственного автоинкремента.

rooor, на кой фиг понадобился такой функционал?


_____________
Стимулятор ~yoomoney - 41001303250491
Zzepish
Valick
мне такое тоже надо! Ибо нужно проеверить- есть ли в таблице какие-то данные, перед тем, как в нее что-то пихаьть
rooor
Цитата (Valick @ 1.07.2014 - 01:04)
на кой фиг понадобился такой функционал?

например, чтобы пользователь мог добавлять в таблицу только указанное(конкретно ему) количество строк.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.