Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

tipo de campo timestamp

Estas en el tema de tipo de campo timestamp en el foro de SQL Server en Foros del Web. Hola a todos, soy nuevo aquí y "semi-nuevo" en el sql, actualmente estoy trabajando en un trigger en el cual quiero que cuando doy de ...
  #1 (permalink)  
Antiguo 22/10/2007, 04:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
tipo de campo timestamp

Hola a todos, soy nuevo aquí y "semi-nuevo" en el sql, actualmente estoy trabajando en un trigger en el cual quiero que cuando doy de alta en una tabla swe dé automáticamente de alta en otra, pero en la tabla a la que dirijo el desencadenador tiene un campo de tipo timestamp, cuando doy a la opción de validar se visualiza el mensaje de "campos completados correctamente" pero cuando escojo la opción de ejecutar "No se puede insertar un valor explícito en una columna de marca de hora". ¿Esto quiere decir que cuando desde mi aplicación dé de alta un cliente no se va ejecutar correctamente dicho disparador? ¿Habría alguna forma de solucionarlo? Gracias y saludos.
  #2 (permalink)  
Antiguo 22/10/2007, 13:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: tipo de campo timestamp

¿Nos puedes mostrar el codigo donde haces el INSERT?

Si en la lista de campos a insertar estas haciendo mencion a dicho campo, ahi es donde esta el problema.
  #3 (permalink)  
Antiguo 22/10/2007, 16:13
 
Fecha de Ingreso: octubre-2007
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: tipo de campo timestamp

Hola, bueno trataré de ser más explícito, la verdad es que tengo 3 tablas Customer, Cldireccion, Cliente, las dos últimas pertenecientes a una base de datos distinta a la primera Customer tiene el campo tipo timestamp, además de otros nombre, direccion, etc y el desencadenador quiero ejcutarlo desde la base de datos de la tabla clientes:

USE BaseDatos
GO
IF (SELECT Count(*) FROM dbo.Customer, inserted WHERE inserted.cliente = dbo.Customer.no_) <= 0
BEGIN

CREATE TRIGGER nom_trigg ON dbo.Clientes
FOR INSERT, UPDATE
AS
IF dbo.Customer
INSERT INTO (campo_Timestamp, no_, name,cif, ...)
SELECT 0, inserted.numero, inserted.nomb, inserted.ncif, ...
FROM inserted
END

ELSE
BEGIN

UPDATE dbo.Customer
SET campo_Timestamp = 0, name= (SELECT nomb FROM inserted), cif = (SELECT ncif FROM inserted), .....
WHERE no_ = (SELECT numero FROM inserted)

END

Gracias y saludos
  #4 (permalink)  
Antiguo 22/10/2007, 18:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: tipo de campo timestamp

Lo dicho, no puedes hacer mencion del campo TIMESTAMP en tu INSERT, esto es incorrecto

INSERT INTO (campo_Timestamp

Ya que el TIMESTAMP, se comporta exactamente como un IDENTITY.
  #5 (permalink)  
Antiguo 23/10/2007, 01:06
 
Fecha de Ingreso: octubre-2007
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: tipo de campo timestamp

Ok, iislas lo he eliminado y ha desaparecido el error.
Gracias de nuevo
  #6 (permalink)  
Antiguo 23/10/2007, 17:08
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: tipo de campo timestamp

Perfecto, como te comente un TIMESTAMP se comparta de la misma forma que un IDENTITY, solo puedes tener uno por tabla y no deben ser mencionados en la lista de los campos del INSERT.
  #7 (permalink)  
Antiguo 24/10/2007, 15:42
 
Fecha de Ingreso: octubre-2007
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: tipo de campo timestamp

Entiendo, ni en el INSERT ni en el UPDATE.
  #8 (permalink)  
Antiguo 24/10/2007, 15:50
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: tipo de campo timestamp

Exacto, no puede ser nombrado ni en el INSERT ni UPDATE
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:40.