Array
(
)

Dúvida em Triggers com atribuição de Valores

Dessis Empresarial
   - 18 ago 2009

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.

Emerson
   - 19 ago 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.

Dessis Empresarial
   - 20 ago 2009

Tentei fazer, veja o erro que ocorreu:

#Código

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;

Emerson
   - 20 ago 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 inserted.