2014-01-15 2 views
0

У нас есть таблица, в которой только когда-либо содержится одна запись определенного типа, поэтому, если мы получим запрос на вставку, мы удалим все и затем вставим. Вставка происходит из пользовательских данных, и были случаи, когда она выдавала ошибку (возможно, они не заполняли что-то и т. Д.), И мы закончили с кучей удаленных данных. Мы обрабатываем всю обработку данных, поэтому у нас больше нет такой ошибки, но мне было интересно:Postgres: тестовая вставка или обновление перед этим?

Есть ли способ протестировать вставку или обновление, чтобы увидеть, будет ли она работать до ее фактического выполнения?

+2

Похоже, вы должны использовать транзакции базы данных: откатываться от ошибок, совершать успешные действия. – alecxe

+0

Это прекрасно. Благодарю. –

ответ

2

Открыть сеанс и сделать все, что в transaction:

BEGIN; 
INSERT ... 

-- check if it worked 
ROLLBACK; 

Все будет откат. Некоторые возможные побочные эффекты: приращение последовательностей не сбрасывается. Некоторые функции, такие как dblink(), нельзя откат. Обычные INSERT или UPDATE являются безопасными. Имейте в виду, что вы можете блокировать строки, пока ваша транзакция открыта.

Однако, если вы работаете с ценными данными, вы не должны игрушечно с ним. Создайте копию своей базы данных для тестирования.

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