Dúvida em Triggers com atribuição de Valores
Saudações,
Trabalho há algum tempo com Firebird e agora estou me aventurando com o SQL Server 2008. Minha dúvida é a seguinte no Firebird eu consigo atribuir a um campo o valor de outro, exemplo (Inserção):
Begin
New.Total = New.Quantidade * New.Preco;
end;
Perguntinha, há alguma maneira de fazer essa atribuição no SQL Server dentro de uma Trigger?
Valeu.
Trabalho há algum tempo com Firebird e agora estou me aventurando com o SQL Server 2008. Minha dúvida é a seguinte no Firebird eu consigo atribuir a um campo o valor de outro, exemplo (Inserção):
Begin
New.Total = New.Quantidade * New.Preco;
end;
Perguntinha, há alguma maneira de fazer essa atribuição no SQL Server dentro de uma Trigger?
Valeu.
Dessis Empresarial
Curtidas 0
Respostas
Emerson Nascimento
18/08/2009
o SQL Server cria tabela temporárias para suas manipulações.
se estiver acontecendo uma inclusão, a tabela é INSERTED
se estiver acontecendo uma alteração, a tabela é UPDATED
se estiver acontecendo uma exclusão, a tabela é DELETED
basta manipular o(s) registro(s) destas tabelas.
se estiver acontecendo uma inclusão, a tabela é INSERTED
se estiver acontecendo uma alteração, a tabela é UPDATED
se estiver acontecendo uma exclusão, a tabela é DELETED
basta manipular o(s) registro(s) destas tabelas.
GOSTEI 0
Dessis Empresarial
18/08/2009
Tentei fazer, veja o erro que ocorreu:
O problema que eu precisava fazer isso no Insert;
CREATE TRIGGER [dbo].[CFG01O010_tri] ON [dbo].[CFG01O010] WITH EXECUTE AS CALLER FOR INSERT AS BEGIN update inserted set f001 = f999; END GO As tabelas lógicas INSERTED e DELETED não podem ser atualizadas.
O problema que eu precisava fazer isso no Insert;
GOSTEI 0
Emerson Nascimento
18/08/2009
tente:
update CFG01O010 set f001 = f999 where CampoID = inserted.CampoID
lembre-se que a tabela inserted pode retornar vários registros ao mesmo. para evitar qualquer problema, faça a alteração com auxílio de cursores, alterando assim todos os registros da tabela [i:b8c0a41df4]inserted[/i:b8c0a41df4].
update CFG01O010 set f001 = f999 where CampoID = inserted.CampoID
lembre-se que a tabela inserted pode retornar vários registros ao mesmo. para evitar qualquer problema, faça a alteração com auxílio de cursores, alterando assim todos os registros da tabela [i:b8c0a41df4]inserted[/i:b8c0a41df4].
GOSTEI 0