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:
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
Respuesta Responder a este mensaje
#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:
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:
> 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


Respuesta Responder a este mensaje
#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:
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:
> 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


Respuesta Responder a este mensaje
#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:
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:
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:
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
Respuesta Responder a este mensaje
#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%
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:
> 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:
>> 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:
>>> 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


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida