Oracle Trigger для сохранения ценности - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть столбец, который я должен быть в состоянии гарантировать, что никогда не будет установлен ничего, кроме «N» - я думал, что триггер будет идеальным решением для этого, но я не могу понять, как сделатьтак, чтобы в любое время для столбца устанавливалось что-то отличное от «N», я сбрасывал его обратно на «N»

Любые указатели?

РЕДАКТИРОВАТЬ: я не хотел бы делать ограничение, потому чтоприложение, которое может изменить его на Y, находится вне моего контроля, и я не хочу, чтобы оно получало ошибки, когда оно устанавливает его на Y, я просто хочу пассивно установить его обратно на N без фанфар.

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

Я бы порекомендовал ограничение столбца вместо триггера. Проще отследить и отладить. Но я предполагаю, что вы имеете в виду, что он никогда не может быть установлен на любое значение, кроме N или null, верно? Если нет, зачем его хранить, если значение всегда 'N'?

1 голос
/ 09 апреля 2010

Нечто подобное возможно. Я знаю, что это плохая идея, и она вернется, чтобы преследовать вас. Кроме того, я не делал Oracle в течение нескольких лет, но вы должны начать:

create or replace trigger trg_special_col before update on AnnoyingTable
for each row
begin
  :new.special_col := 'N';
end;
0 голосов
/ 09 апреля 2010

Самый простой способ (если для вас открыта опция создания представлений) состоит в том, чтобы предоставить представление для вашей таблицы и установить значение столбца в статическом значении «N» в представлении, т.е. значение в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...