Pergunta

I'd like to improve upon the following code because I don't care to have all these select statements if I can avoid it for this trigger. I require default values to be placed for a few fields during an INSERT. The code works, I'm just looking for other suggestions. Thanks!

SET TERM || ;
CREATE TRIGGER populate_defaults FOR units
ACTIVE
BEFORE INSERT
AS
BEGIN
      new.value1 = (select value1 from defaults);
      new.value2 = (select value2 from defaults);
      new.value3 = (select value3 from defaults);
      new.value4 = (select value4 from defaults);
      new.value5 = (select value5 from defaults);
      new.value6 = (select value6 from defaults);
      new.value7 = (select value7 from defaults);
      new.value8 = (select value8 from defaults);
      new.value9 = (select value9 from defaults);
END ||
SET TERM ; ||
Foi útil?

Solução

You can do a single select; try this:

SET TERM || ;
CREATE TRIGGER populate_defaults FOR units
ACTIVE
BEFORE INSERT
AS
BEGIN
  select   value1, value2, value3, value4
         , value5, value6, value7, value8
         , value9
    from defaults
    into   new.value1, new.value2, new.value3, new.value4
         , new.value5, new.value6, new.value7, new.value8
         , new.value9
END ||
SET TERM ; ||

I just can't remember if the new have to be prefixed by a colon or not, that exercise is up to the reader.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top