Trigger, será que tem jeito?
Olá, por favor, ajude-me.
Tenho duas tabelas (CARNÊ e CARNÊ PRESTAÇÃO):
CARNE 1 X N CARNE_PRESTACAO
[b:8b48092fad]Preciso fazer um trigger que ao se criar um novo registro na tabela CARNE, sejam criados registros na tabela CARNE_PRESTACAO até o número de prestações indicados na tabela CARNE.[/b:8b48092fad]
Tipo assim:
Entro com os dados manualmente na tabela CARNE:
Aí na tabela CARNE_PRESTACAO é automaticamente inserido:
Acho que não difícil, mas não estou conseguindo.
Obrigado.
Roberto
Tenho duas tabelas (CARNÊ e CARNÊ PRESTAÇÃO):
CREATE TABLE CARNE ( ID_CARNE INTEGER NOT NULL, NU_CARNE INTEGER NOT NULL, NU_VALOR NUMERIC(9,2) NOT NULL, DT_AQUISICAO DATE DEFAULT CURRENT_DATE NOT NULL, NU_PRESTACOES SMALLINT DEFAULT 12 NOT NULL );
CREATE TABLE CARNE_PRESTACAO ( ID_CARNE INTEGER NOT NULL, DT_PAGAMENTO DATE DEFAULT CURRENT_DATE, NU_VALOR_PAGO NUMERIC(9,2), NU_PRESTACAO SMALLINT DEFAULT 1 NOT NULL, IN_PAGO SMALLINT DEFAULT 0 NOT NULL ); ALTER TABLE CARNE_PRESTACAO ADD CONSTRAINT FK_CARNE_PRESTACAO FOREIGN KEY (ID_CARNE) REFERENCES CARNE (ID_CARNE) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE CARNE_PRESTACAO ADD CONSTRAINT UNQ_CARNE_PRESTACAO UNIQUE (ID_CARNE, NU_PRESTACAO);
CARNE 1 X N CARNE_PRESTACAO
[b:8b48092fad]Preciso fazer um trigger que ao se criar um novo registro na tabela CARNE, sejam criados registros na tabela CARNE_PRESTACAO até o número de prestações indicados na tabela CARNE.[/b:8b48092fad]
Tipo assim:
Entro com os dados manualmente na tabela CARNE:
ID_CARNE: 10 NU_CARNE: 123 NU_VALOR: 50,00 DT_AQUISICAO: 20.07.2004 NU_PRESTACOES: 10
Aí na tabela CARNE_PRESTACAO é automaticamente inserido:
ID_CARNE: 10 DT_PAGAMENTO: NULL NU_VALOR_PAGO: NULL NU_PRESTACAO: 1 <========= IN_PAGO: 0 ID_CARNE: 10 DT_PAGAMENTO: NULL NU_VALOR_PAGO: NULL NU_PRESTACAO: 2 <========= IN_PAGO: 0 3, 4, 5, 6, 7, 8, 9 <========= ID_CARNE: 10 DT_PAGAMENTO: NULL NU_VALOR_PAGO: NULL NU_PRESTACAO: 10 <========= IN_PAGO: 0
Acho que não difícil, mas não estou conseguindo.
Obrigado.
Roberto
Tenil
Curtidas 0
Respostas
Tenil
20/07/2004
Afarias, ajudaí mano.
Valeu.
Valeu.
GOSTEI 0
Tenil
20/07/2004
Pow, to precisando mesmo, ajudae.
GOSTEI 0
Beppe
20/07/2004
CREATE TRIGGER Cria_Prestacoes FOR CARNE ACTIVE AFTER INSERT POSITION 0 AS DECLARE VARIABLE contador INTEGER; BEGIN contador = new.NU_PRESTACOES; WHILE (contador > 0) DO BEGIN INSERT INTO CARNE_PRESTACOES (ID_CARNE, DT_PAGAMENTO, NU_VALOR_PAGO, NU_PRESTACAO, IN_PAGO) VALUES (new.ID_CARNE, NULL, NULL, contador, 0); contador = contador - 1; END; END
Diz aí se funcionou. :wink:
GOSTEI 0
Tenil
20/07/2004
FUNCIONOU! :D :D :D
Beppe, kra, muito obrigado mesmo.
Vc salvou minha pele.
Vc pode me dizer mais uma coisa?
Tem, jeito de fazer um select num trigger que retorna 1 valor apenas e atribuir este valor a uma variável e usá-lo?
Tentei fazer isto mas não consegui.
Valew brother,
Roberto
Beppe, kra, muito obrigado mesmo.
Vc salvou minha pele.
Vc pode me dizer mais uma coisa?
Tem, jeito de fazer um select num trigger que retorna 1 valor apenas e atribuir este valor a uma variável e usá-lo?
Tentei fazer isto mas não consegui.
Valew brother,
Roberto
GOSTEI 0