Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/07/2008, 08:56
OscarH
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: NOVATO: Problema con Triggers ¿como hacerlo?

Que Tal,

Así es id es la columna que obtendrá el valor de la secuencia en tu tabla TEMAS,
NEW hace referencia al nuevo valor que obtendrá ese campo. ya que en el insert podrias ponerle al id un valor. ese valor lo podrías obtener con OLD.ID.

TE ENVIÓ EL SIGUIENTE SCRIPT PARA QUE PUEDAS EJECUTARLO Y VER LO QUE SUCEDE CUANDO INSERTAS ANTES DE CREAR EL TRIGGER Y DESPUÉS DE CREARLO.

DROP TABLE TEST_SECUEN
/

DROP SEQUENCE SEQ_TEST
/

DROP TRIGGER TEST_TRIGGER
/



CREATE TABLE TEST_SECUEN (
ID_TEST NUMBER(5),
TEST_DESC VARCHAR2(50),
TEST_STAT NUMBER(2))
/


CREATE SEQUENCE SEQ_TEST MINVALUE 1 MAXVALUE 9999999 INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE
/


INSERT INTO test_secuen (test_desc, test_stat)
VALUES ('ANTES DEL TRIGGER', 1)
/

SELECT * FROM TEST_SECUEN
/

CREATE OR REPLACE TRIGGER TEST_TRIGGER BEFORE INSERT ON TEST_SECUEN
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
BEGIN

SELECT seq_test.NEXTVAL
INTO :NEW.id_test
FROM dual;

END;
/


INSERT INTO test_secuen (test_desc, test_stat)
VALUES ('ANTES DEL TRIGGER', 1)
/

SELECT * FROM TEST_SECUEN
/


ESPERO TE SEA DE UTILIDAD.