Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как прервать транзакцию begin commit по условию? / 10 сообщений из 10, страница 1 из 1
14.08.2018, 12:33
    #39687410
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
Код: sql
1.
2.
3.
4.
5.
BEGIN;
IF EXISTS (SELECT id FROM doc WHERE name='Петя') THEN ABORT;  -- вот тут
INSERT INTO ....;
SELECT currval('seq_name');
COMMIT;


Нужно проверить что если уже есть Петя то прервать транзакцию.

Но выводит ошибку

ОШИБКА: ошибка синтаксиса (примерное положение: "IF") LINE 1: IF (EXISTS (SELECT
...
Рейтинг: 0 / 0
14.08.2018, 13:32
    #39687447
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
Просто вставляй запись. Если Петя уже есть, вставка обломится по нарушению УК и транзакция откатится.
...
Рейтинг: 0 / 0
14.08.2018, 14:00
    #39687473
256k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
manking
Код: sql
1.
2.
3.
4.
5.
BEGIN;
IF EXISTS (SELECT id FROM doc WHERE name='Петя') THEN ABORT;  -- вот тут
INSERT INTO ....;
SELECT currval('seq_name');
COMMIT;


Нужно проверить что если уже есть Петя то прервать транзакцию.

Но выводит ошибку

ОШИБКА: ошибка синтаксиса (примерное положение: "IF") LINE 1: IF (EXISTS (SELECT


BEGIN;
IF EXISTS (SELECT id FROM doc WHERE name='Петя') THEN ABORT; END IF;<<-- вот тут
INSERT INTO ....;
SELECT currval('seq_name');
COMMIT;
...
Рейтинг: 0 / 0
14.08.2018, 16:42
    #39687627
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
manking,

Это pg/plsql или sql ?
...
Рейтинг: 0 / 0
15.08.2018, 15:08
    #39688193
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
big-trot,

Обычный sql в postgreSql.
...
Рейтинг: 0 / 0
15.08.2018, 18:33
    #39688335
big-trot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
manking,

IF в обычном SQL нет. Надо CASE использовать.
...
Рейтинг: 0 / 0
16.08.2018, 14:02
    #39688844
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
mankingОбычный sql в postgreSql.
Повторяю медленно: просто делай INSERT. Транзакция откатится по ошибке автоматически.
...
Рейтинг: 0 / 0
16.08.2018, 14:31
    #39688890
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
Dimitry SibiryakovmankingОбычный sql в postgreSql.
Повторяю медленно: просто делай INSERT. Транзакция откатится по ошибке автоматически.
например у него уникъю нет

и разобраться что скл и плпгскл -- совершенно разные ленгвичи -- очень полезно
...
Рейтинг: 0 / 0
17.08.2018, 18:42
    #39689628
white_shoe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
BEGIN;
IF EXISTS (SELECT id FROM doc WHERE name='Петя') THEN 
 raise exception 'Петя у нас уже есть!';
END IF;

INSERT INTO ....;
SELECT currval('seq_name');
COMMIT;
...
Рейтинг: 0 / 0
17.08.2018, 19:06
    #39689642
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прервать транзакцию begin commit по условию?
white_shoe,

Это что за код? На каком языке? Пробовали в `psql` запускать?
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как прервать транзакцию begin commit по условию? / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]