Fórum Trigger, será que tem jeito? #45596
20/07/2004
0
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
Curtir tópico
+ 0Posts
20/07/2004
Tenil
Valeu.
Gostei + 0
21/07/2004
Tenil
Gostei + 0
21/07/2004
Beppe
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
23/07/2004
Tenil
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
Clique aqui para fazer login e interagir na Comunidade :)