Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-04-2017
LIGERO LIGERO is offline
Miembro
 
Registrado: jun 2007
Posts: 42
Poder: 0
LIGERO Va por buen camino
Modificar campo al insertar registro

Buenas:

Estoy haciendo un trigger para cuando se inserta un registro en una base de datos, modificar uno de los campos de dicho registro.


Primera opción que no funciona

Código SQL [-]

USE [G001]
GO
/****** Object:  Trigger [dbo].[mapeoweb]    Script Date: 04/28/2017 10:43:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[mapeoweb]
ON [dbo].[INCIDENCIASLIN]
FOR INSERT
AS


BEGIN

  SET NOCOUNT ON

  if (comentario like '%MRW%')
    totalcliente=totalcliente / 1.21
       
END



Esta opción funciona, pero realiza el cambio en todos los registros de la tabla implicados en la clausula where

Código SQL [-]

USE [G001]
GO
/****** Object:  Trigger [dbo].[mapeoweb]    Script Date: 04/28/2017 10:43:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[mapeoweb]
ON [dbo].[INCIDENCIASLIN]
FOR INSERT
AS


BEGIN

  SET NOCOUNT ON

update incidenciaslin
set totalcliente=totalcliente / 1.21    
WHERE comentario like '%MRW%' and codarticulo<=0

update incidenciaslin
set codarticulo=9586  
WHERE comentario like '%MRW%' 


update incidenciaslin
set codarticulo=22175,
  UDSCLI1=1,
  UDSCLI2=1,
  UDSCLI3=1,
  UDSCLI4=1, 
  totalcliente=2.5
WHERE comentario like '%MegaReembolso%' 

END



Muchas gracias y espero poder solucionar el problema con vuestra ayuda.
Responder Con Cita
  #2  
Antiguo 28-04-2017
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
Hace algo de tiempo que no hago nada en SQL Server así que mi información pueda ser algo inexacta. Para poder modificar los campos insertados el trigger debe ser declarado como instead of insert:

Código SQL [-]
CREATE TRIGGER nombretrigger ON nombretabla
INSTEAD OF INSERT 
AS

Lo segundo es que para accesar los registros que se están insertando hay que hacer uso de la tabla especial inserted.

Con esta información puedes realizar busqueda en Google y seguramente encontraras muchos ejemplos funcionales.
Responder Con Cita
  #3  
Antiguo 02-05-2017
LIGERO LIGERO is offline
Miembro
 
Registrado: jun 2007
Posts: 42
Poder: 0
LIGERO Va por buen camino
Después de algunos intentos, este código no me da error, pero tampoco inserta la líneas del pedido.

Código SQL [-]
USE [G001]
GO
/****** Object:  Trigger [dbo].[mapeoweb]    Script Date: 05/02/2017 10:16:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[mapeoweb]
ON [dbo].[INCIDENCIASLIN]
instead of INSERT
AS

declare @linea as int

BEGIN

  SET NOCOUNT ON

  set @linea = (SELECT idlinea FROM INSERTED)

  if EXISTS( SELECT comentario FROM INSERTED where comentario like '%MRW%')
  begin
    update incidenciaslin 
    set totalcliente = totalcliente / 1.21 
    where idlinea = @linea  
  end
    
END
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
insertar o modificar un registro completo a otro osvrom SQL 10 23-01-2013 21:10:14
Insertar registro sin repetir campo gulder Varios 3 01-02-2008 01:44:42
Insertar y/o modificar un campo con decimales rafita Varios 5 30-07-2007 11:41:28
insertar registro en campo blob con asp oarias Firebird e Interbase 0 09-02-2007 19:42:50
Problema el insertar/modificar registro ing_alsaac Conexión con bases de datos 0 29-02-2004 10:18:15


La franja horaria es GMT +2. Ahora son las 14:54:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi