Trigger

08/12/2003 - 21:17 por Julio | Informe spam
Hola grupo quiero hacer un trigger para hacer un update de la siguiente
manera:

Tengo una tabla llamada 'requisiciones_compras' que tiene un campo llamado
RequisicionNumero
y tengo otra tabla llamada 'requisicionespordepartamento' que tiene un campo
llamado RequisitionNumber.
Lo que quiero con esto es que cuando yo le haga un update al campo
ordennuemro me actualize el campo RequisitionNumber
ya que ambos contienen la misma informacion, debido a que tengo un trigger
que me hace un insert del campo RequisicionNumero al campo RequisitionNumber
pero me esta faltando el update.

Pero esto no me sale.

create trigger Update_requisicion
on requisicionpordepartamento
for update

AS

update requisiciones_compras
set requisiciones_compras.requisicionnumero = (select
inserted.requisitionnumber
where requisiciones_compras.requisicionnumero = inserted.requisitionnumber)
from requisiciones_compras inner join inserted
on requisiciones_compras.requisicionnumero = inserted.requisitionnumber

Preguntas similare

Leer las respuestas

#1 Javier Loria
09/12/2003 - 01:22 | Informe spam
Hola Julio:
Eso que estas haciendo es innecesario, estas trabajando de mas, haciendo
mas lento los procesos en el servidor de SQL y el mantenimiento casi
imposible. Deberias seriamente pensar en normalizar y hacer una vista que
resuelva este problema.
Si siempre quieres hacerlo asi el codigo seria, y dependiendo de la
Llave Primaria:
=CREATE TRIGGER Update_Requisicion
ON RequisicionPorDepartamento
FOR UPDATE
AS
UPDATE Requisiciones_Compras
SET requisicionnumero=Inserted.RequisitionNumber
FROM Requisiciones_Compras JOIN Inserted
ON Requisiciones_Compras.LlavePrimaria=Inserted.LlavePrimaria
=
Si la Llave Primaria es RequisicionNumero, entonces el trigger se
descompone, porque no hay forma de unir la tabla deleted con la inserted.

Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


Julio escribio:
Mostrar la cita
#2 julio
10/12/2003 - 02:54 | Informe spam
Gracias Javier por tu observacion. Me funciono a la perfeccion
"Javier Loria" wrote in message
news:
Mostrar la cita
haciendo
Mostrar la cita
#3 Julio
11/12/2003 - 12:57 | Informe spam
Hola Javier, estaba probando el update que me plantea, pero tengo un
problema con esto y es el siguiente:

que en la tabla RequisicionPorDepartamento en alguna ocasiones se crean
requisiciones que no van a la tabla Requisiciones_Compras, entonces no
puedo hacer el update ya la clave primaria no de ambas tablas no coinciden,
porque las requisiciones solo se quedan en la tabla
RequisicionPorDepartamento.



Como puedo lograr hacer este update que se por los campos:

requisicionnumero

RequisitionNumber



"Javier Loria" wrote in message
news:
Mostrar la cita
haciendo
Mostrar la cita
#4 Javier Loria
11/12/2003 - 13:36 | Informe spam
Hola Julio:
Tal vez no estoy entendiendo, pero si algunas de las Requisiciones Por
Departamento no se graban en Compras el JOIN deberia "Filtrarlas"
actualizando UNICAMENTE las que coinciden!!!
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Julio escribio:
Mostrar la cita
#5 Julio
11/12/2003 - 14:36 | Informe spam
Hola javier, lo primero es que mi primary key es Ordennumero en la tabla
Requisiciones_Compras y veo un comentario tuyo que me dices que me
funcionaria si.
El codigo que me indica funciona bien si ambos ID Coinsiden.
Me explico.

Si yo hago un insert en la tabla RequisicionesPorDepartamento se me activa
el siguiente trigger

Create trigger Insert_requisicionespordepartamento111
on requisicionpordepartamento
for insert
AS
Declare @1 varchar (10)
set @1=(select supplier from inserted)
if not @1 = 'caja chica'
Begin
insert into Requisiciones_Compras
(fecha,requisicionnumero,departamentoid,prioridad)
select [Date],requisitionnumber,departamentoid,priority
from inserted
end
go

este trigger me copia la informacion en la tabla Requisiciones_Compras
siempre y cuando el campo Supplier no sea 'Caja Chica'

Te mostrare el codigo de las dos tabla.

Create table RequisicionPorDepartamento
(RequisitionID int identity(1,1)
Primary Key,
Requisitionnumber varchar (20) not null,
[date] datetime default GETDATE(),
DepartamentoID int,
Empleado varchar (30) DEFAULT SUSER_Sname(),
Vassel char (10)not null,
Supplier Varchar (50)not null,
Component varchar (20),
Priority char (10),
Constraint Requisiciones_Compras_departamento foreign key (departamentoID)
references departamento (departamentoID))

go

create table Requisiciones_Compras
(RequisicionesID int identity(1,1),
DepartamentoID int not null,
RequisicionNumero varchar (15)not null primary key clustered,
Prioridad char (10),
Fecha datetime not null,
constraint Fk_Requisiciones_Compras_departamento foreign key
(departamentoID)
references departamento (departamentoID))








"Javier Loria" wrote in message
news:OuMbhN%
Mostrar la cita
Ads by Google
Search Busqueda sugerida