O Analista abre um chamado X, este chamado pode ter diversos tramites, ou seja, X.1/X.2/X.3... assim vai. Para montar isso pensei em seguintes tabelas:
create table func ( cp_codfun int NOT NULL constraint pk_func primary key, cp_nomfun varchar(50) NOT NULL, cp_email varchar(50) NULL ) create table cham ( cp_codcham int not null identity (1,1) constraint pk_cham primary key, cp_datini date not null, cp_codfun int not null constraint fk_cham_func foreign key references func(cp_codfun), cp_nomcli varchar(50) not null, cp_nomcont varchar (30) not null, cp_desprob text not null, cp_status varchar(10) not null constraint ck_status check (cp_status in ('aberto','fechado','aguardando')) ) create table tram ( cp_codtra int not null constraint pk_tram primary key, cp_numtra int not null, cp_codcall int not null constraint fk_tram_cham foreign key references cham(cp_codcham), cp_dattra date not null )
A tabela de tramites, teria ligação com a tabela de chamados. A numeração do tramite tem que ser zerada sempre que mudar a numeração do chamado, perguntando em um lugar e outro me disseram que isso deve ser feito por uma trigger, porém, não sei nada sobre triggers.
Alguém sabe me dizer como criar uma ou me indicar um local onde eu possa ler a respeito de como cria-la?
Desde já agradeço a atenção.
Galera, procurando e xeretando acabei chegando a isso aqui:
DROP TRIGGER IF EXISTS `HISCHM`; DELIMITER // CREATE TRIGGER `HISCHM` BEFORE INSERT ON `tram` FOR EACH ROW BEGIN declare numero int default 0; Set numero = (select max(cp_numtra) From tram where cp_codcall = new.cp_codcall); if ((numero <= 0) or (numero is null))then set numero = 1; else set numero = numero + 1; end if; set new.cp_numtra = numero; END // DELIMITER ;
Mas não está funfando e não estou conseguindo descobrir o que pode ser?
Alguém tem uma luz divida de sabedoria?
Abraços