Usuário com melhor resposta
É possível criar uma trigger a partir de uma procedure?

Pergunta
-
Respostas
-
isso nao e possivel a menos que vc. use um exec()
Create table Exemplo (campo int)
drop proc criatrigger
create proc criatrigger
asdeclare @executar varchar(1000)
Set @executar = 'create trigger tr on exemplo after insert as print ''oi'''
exec (@executar)Abs; qual a sua ideia ?
Todas as Respostas
-
isso nao e possivel a menos que vc. use um exec()
Create table Exemplo (campo int)
drop proc criatrigger
create proc criatrigger
asdeclare @executar varchar(1000)
Set @executar = 'create trigger tr on exemplo after insert as print ''oi'''
exec (@executar)Abs; qual a sua ideia ?
-
-
-
Não deu certo
O código é o seguinte:
declare @executar varchar(6000)
Set @executar = 'CREATE trigger tU_TBINTE_PESSOA on dbo.TBINTE_PESSOA
FOR UPDATE
as
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* UPDATE trigger on TBINTE_PESSOA */
begin
declare @numrows int,
@nullcnt int,
@validcnt int,
@inscd_Pessoa int,
@errno int,
@errmsg varchar(255)
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/85 TBINTE_TELEFONE ON PARENT UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_TELEFONE"
P2C_VERB_PHRASE="R/85", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_85", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_TELEFONE
where
/* %JoinFKPK(TBINTE_TELEFONE,deleted," = "," and") */
TBINTE_TELEFONE.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_TELEFONE exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/83 TBINTE_ENDERECO ON PARENT UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_ENDERECO"
P2C_VERB_PHRASE="R/83", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_83", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_ENDERECO
where
/* %JoinFKPK(TBINTE_ENDERECO,deleted," = "," and") */
TBINTE_ENDERECO.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_ENDERECO exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/68 TBINTE_OCORRENCIA_TBINTE_PESSOA ON PARENT UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_OCORRENCIA_TBINTE_PESSOA"
P2C_VERB_PHRASE="R/68", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_68", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_OCORRENCIA_TBINTE_PESSOA
where
/* %JoinFKPK(TBINTE_OCORRENCIA_TBINTE_PESSOA,deleted," = "," and") */
TBINTE_OCORRENCIA_TBINTE_PESSOA.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_OCORRENCIA_TBINTE_PESSOA exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/65 TBINTE_HORARIOESPECIAL_TBINTE_PESSOA ON PARENT UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_HORARIOESPECIAL_TBINTE_PESSOA"
P2C_VERB_PHRASE="R/65", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_65", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_HORARIOESPECIAL_TBINTE_PESSOA
where
/* %JoinFKPK(TBINTE_HORARIOESPECIAL_TBINTE_PESSOA,deleted," = "," and") */
TBINTE_HORARIOESPECIAL_TBINTE_PESSOA.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_HORARIOESPECIAL_TBINTE_PESSOA exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/60 TBINTE_GRATIFICACAO_TBINTE_PESSOA ON PARENT UPDATE RESTRICT */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_GRATIFICACAO_TBINTE_PESSOA"
P2C_VERB_PHRASE="R/60", C2P_VERB_PHRASE="",
FK_CONSTRAINT="fkTBINT_GRAT_TBINT_PES_TBINT_PES", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_GRATIFICACAO_TBINTE_PESSOA
where
/* %JoinFKPK(TBINTE_GRATIFICACAO_TBINTE_PESSOA,deleted," = "," and") */
TBINTE_GRATIFICACAO_TBINTE_PESSOA.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_GRATIFICACAO_TBINTE_PESSOA exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/51 TBINTE_TIPOPESSOA_TBINTE_PESSOA ON PARENT UPDATE RESTRICT */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_TIPOPESSOA_TBINTE_PESSOA"
P2C_VERB_PHRASE="R/51", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Pes_TipPes", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_TIPOPESSOA_TBINTE_PESSOA
where
/* %JoinFKPK(TBINTE_TIPOPESSOA_TBINTE_PESSOA,deleted," = "," and") */
TBINTE_TIPOPESSOA_TBINTE_PESSOA.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_TIPOPESSOA_TBINTE_PESSOA exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PESSOA R/26 TBINTE_INFORMACAO ON PARENT UPDATE RESTRICT */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PESSOA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_INFORMACAO"
P2C_VERB_PHRASE="R/26", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_TBAssPes_Pes", FK_COLUMNS="cd_Pessoa" */
if
/* %ParentPK(" or",update) */
update(cd_Pessoa)
begin
if exists (
select * from deleted,TBINTE_INFORMACAO
where
/* %JoinFKPK(TBINTE_INFORMACAO,deleted," = "," and") */
TBINTE_INFORMACAO.cd_Pessoa = deleted.cd_Pessoa
)
begin
select @errno = 30005,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_INFORMACAO exists.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_LOTACAO R/78 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_LOTACAO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/78", C2P_VERB_PHRASE="",
FK_CONSTRAINT="R_78", FK_COLUMNS="ci_Lotacao" */
if
/* %ChildFK(" or",update) */
update(ci_Lotacao)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_Lotacao = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_LOTACAO
where
/* %JoinFKPK(inserted,TBINTE_LOTACAO," = "," and") */
inserted.ci_Lotacao = TBINTE_LOTACAO.ci_Lotacao
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_GRADE R/39 TBINTE_PESSOA ON CHILD UPDATE RESTRICT */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_GRADE"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/39", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Grade_HR_Pessoa", FK_COLUMNS="cd_Grade" */
if
/* %ChildFK(" or",update) */
update(cd_Grade)
begin
select @nullcnt = 0
select @validcnt = count(*)
from inserted,TBINTE_GRADE
where
/* %JoinFKPK(inserted,TBINTE_GRADE) */
inserted.cd_Grade = TBINTE_GRADE.cd_Grade
/* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
if @validcnt + @nullcnt != @numrows
begin
select @errno = 30007,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_GRADE does not exist.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_CARGAHORARIA R/37 TBINTE_PESSOA ON CHILD UPDATE RESTRICT */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_CARGAHORARIA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/37", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_CargaHR_Pess", FK_COLUMNS="ci_CargaHoraria" */
if
/* %ChildFK(" or",update) */
update(ci_CargaHoraria)
begin
select @nullcnt = 0
select @validcnt = count(*)
from inserted,TBINTE_CARGAHORARIA
where
/* %JoinFKPK(inserted,TBINTE_CARGAHORARIA) */
inserted.ci_CargaHoraria = TBINTE_CARGAHORARIA.ci_CargaHoraria
/* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
if @validcnt + @nullcnt != @numrows
begin
select @errno = 30007,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_CARGAHORARIA does not exist.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_GRUPO R/17 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_GRUPO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/17", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Grupo_Pessoa", FK_COLUMNS="ci_Grupo" */
if
/* %ChildFK(" or",update) */
update(ci_Grupo)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_Grupo = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_GRUPO
where
/* %JoinFKPK(inserted,TBINTE_GRUPO," = "," and") */
inserted.ci_Grupo = TBINTE_GRUPO.ci_Grupo
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_CATEGORIA R/16 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_CATEGORIA"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Categoria_Pessoa", FK_COLUMNS="cd_Categoria" */
if
/* %ChildFK(" or",update) */
update(cd_Categoria)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.cd_Categoria = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_CATEGORIA
where
/* %JoinFKPK(inserted,TBINTE_CATEGORIA," = "," and") */
inserted.cd_Categoria = TBINTE_CATEGORIA.cd_Categoria
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_CLASSE R/13 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_CLASSE"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/13", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Classificacao_Pessoa", FK_COLUMNS="ci_Classe" */
if
/* %ChildFK(" or",update) */
update(ci_Classe)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_Classe = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_CLASSE
where
/* %JoinFKPK(inserted,TBINTE_CLASSE," = "," and") */
inserted.ci_Classe = TBINTE_CLASSE.ci_Classe
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_PARTIDO R/9 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_PARTIDO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Partido_Pess", FK_COLUMNS="ci_Partido" */
if
/* %ChildFK(" or",update) */
update(ci_Partido)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_Partido = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_PARTIDO
where
/* %JoinFKPK(inserted,TBINTE_PARTIDO," = "," and") */
inserted.ci_Partido = TBINTE_PARTIDO.ci_Partido
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_TRATAMENTO R/8 TBINTE_PESSOA ON CHILD UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_TRATAMENTO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Tratamento_Pes", FK_COLUMNS="ci_Tratamento" */
if
/* %ChildFK(" or",update) */
update(ci_Tratamento)
begin
select @nullcnt = 0
select @validcnt = count(*)
from inserted,TBINTE_TRATAMENTO
where
/* %JoinFKPK(inserted,TBINTE_TRATAMENTO) */
inserted.ci_Tratamento = TBINTE_TRATAMENTO.ci_Tratamento
/* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
select @nullcnt = count(*) from inserted where
inserted.ci_Tratamento is null
if @validcnt + @nullcnt != @numrows
begin
select @errno = 30007,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_TRATAMENTO does not exist.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_TIPOFUNCIONARIO R/7 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_TIPOFUNCIONARIO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Tipo_Contrato_Pessoa", FK_COLUMNS="ci_TipoFuncionario" */
if
/* %ChildFK(" or",update) */
update(ci_TipoFuncionario)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_TipoFuncionario = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_TIPOFUNCIONARIO
where
/* %JoinFKPK(inserted,TBINTE_TIPOFUNCIONARIO," = "," and") */
inserted.ci_TipoFuncionario = TBINTE_TIPOFUNCIONARIO.ci_TipoFuncionario
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_TIPOFUNCAO R/6 TBINTE_PESSOA ON CHILD UPDATE NO ACTION */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_TIPOFUNCAO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Tipo_Funcao_Pes", FK_COLUMNS="ci_TipoFuncao" */
if
/* %ChildFK(" or",update) */
update(ci_TipoFuncao)
begin
select @nullcnt = 0
select @validcnt = count(*)
from inserted,TBINTE_TIPOFUNCAO
where
/* %JoinFKPK(inserted,TBINTE_TIPOFUNCAO) */
inserted.ci_TipoFuncao = TBINTE_TIPOFUNCAO.ci_TipoFuncao
/* %NotnullFK(inserted," is null","select @nullcnt = count(*) from inserted where"," and") */
if @validcnt + @nullcnt != @numrows
begin
select @errno = 30007,
@errmsg = ''Cannot UPDATE TBINTE_PESSOA because TBINTE_TIPOFUNCAO does not exist.''
goto error
end
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
/* TBINTE_CARGO R/5 TBINTE_PESSOA ON CHILD UPDATE SET NULL */
/* ERWIN_RELATIONARENT_OWNER="dbo", PARENT_TABLE="TBINTE_CARGO"
CHILD_OWNER="dbo", CHILD_TABLE="TBINTE_PESSOA"
P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="",
FK_CONSTRAINT="Rel_Cargo_Pes", FK_COLUMNS="ci_Cargo" */
if
/* %ChildFK(" or",update) */
update(ci_Cargo)
begin
update TBINTE_PESSOA
set
/* %SetFK(TBINTE_PESSOA,NULL) */
TBINTE_PESSOA.ci_Cargo = NULL
from TBINTE_PESSOA,inserted
where
/* %JoinPKPK(TBINTE_PESSOA,inserted," = "," and") */
TBINTE_PESSOA.cd_Pessoa = inserted.cd_Pessoa and
not exists (
select * from TBINTE_CARGO
where
/* %JoinFKPK(inserted,TBINTE_CARGO," = "," and") */
inserted.ci_Cargo = TBINTE_CARGO.ci_Cargo
)
end
/* ERwin Builtin Mon Jul 03 11:56:11 2006 */
return
error:
raiserror @errno @errmsg
rollback transaction
end'
exec (@executar) -
de um print na variavel @executar copie e cole no query analiser depois de um parse no codigo, deve ter alguma coisa faltantando, vi que tem muitos valores entre ' ' acho que o erro esta ai, veja tambem se o tamanho da variavel e suficiente vc. declarou com 6000 bytes use 8000 para garantir.
Abs;
-
-
cara desculpa a noticia mais neste caso nao vai funcionar, e uma limitacao. estou pensando uma forma de fazer um workaround, uma ideia seria criar o scripr .sql e rodar esse script usando o osql ( aplicativo de linha de comando ). veja no books on line qualquer duvida retorne.
Abs;