1

Oracleデータベースでトリガーを見つけました

create or replace trigger pii_user_activation_trigger
  before insert on pii_user_activation
  for each row
begin
  select seq_pii_user_activation.nextval 
    into :new.id 
    from dual;
end;

id行が挿入されるたびにトリガーが自動的に生成されるようにしたくありません。ステートメントが値を提供しないid場合にのみ新しいものを生成するようにトリガーを変更するにはどうすればよいですか?INSERT

4

3 に答える 3

4
create or replace trigger pii_user_activation_trigger
  before insert on pii_user_activation<
  for each row
begin
  IF :new.id IS NULL THEN
    select seq_pii_user_activation.nextval 
      into :new.id 
      from dual;
  END IF;
end;
于 2012-09-12T03:21:08.813 に答える
3

それはあなたが欲しいように聞こえます

create or replace trigger pii_user_activation_trigger
  before insert on pii_user_activation
  for each row
begin
  IF( :new.id IS NULL )
  THEN
    select seq_pii_user_activation.nextval 
      into :new.id 
      from dual;
  END IF;
end;

これにより、列に NULL 以外のデフォルト値が指定されていないという一般的な前提が成り立ちます。

于 2012-09-12T03:21:18.577 に答える
1

別の方法:

create or replace trigger pii_user_activation_trigger
  before insert on pii_user_activation
  for each row
  WHEN (NEW.id IS NULL)
begin
  select seq_pii_user_activation.nextval 
    into :new.id 
    from dual;
end;

:(WHEN 句では、 の前にを含めないことに注意してくださいNEW

于 2012-09-17T07:19:02.877 に答える