Это довольно специфический вопрос, хотя, возможно, и субъективный, но я использовал этот шаблон очень часто, хотя не видел, чтобы другие использовали его очень часто. Я что-то упускаю или слишком параноидален?
Я обертываю все свои операции UPDATE
, DELETE
, INSERT
в хранимых процедурах и даю EXECUTE
для моего пакета и SELECT
для моих таблиц моему приложению. Для процедур UPDATE
и DELETE
у меня есть оператор IF
в конце, в котором я делаю следующее:
IF SQL%ROWCOUNT <> 1 THEN
RAISE_APPLICATION_ERROR(-20001, 'Invalid number of rows affected: ' || SQL%ROWCOUNT);
END IF;
Эту проверку также можно выполнить в коде приложения, поскольку число задействованных строк обычно доступно после выполнения оператора SQL.
Значит, я что-то упускаю или это не самый безопасный способ убедиться, что вы обновляете или удаляете именно то, что хотите, не больше, не меньше?