2010-11-12 6 views
0

Le type de données datetime dans une colonne de table (last_modified_timestamp) met-il à jour l'heure actuelle automatiquement?Le type de données datetime dans une colonne de table mettra-t-il à jour l'heure actuelle automatiquement?

J'ai une colonne de table comme indiqué ci-dessous, j'ai besoin de savoir si elle va insérer l'heure actuelle dans la colonne automatiquement?

Comment je sais actuellement j'ai des paramètres par défaut dans ma table?

je l'ai changé pour insérer ... pas pour la mise à jour!

alt text

Répondre

1

Non, il ne sera pas. Comment vous attendriez-vous à ce que SQL devine quelles colonnes datetime devraient être mises à jour automatiquement comme ceci, et pourtant d'autres sont destinées à enregistrer, par exemple. dates historiques. Pour les besoins de l'INSERT, vous pouvez avoir une contrainte DEFAULT sur la colonne qui insère la date en cours (Getdate()/CURRENT_TIMESTAMP).

Mais pour que les UPDATE fonctionnent, vous devez implémenter un déclencheur.


Aux fins INSERT, et en utilisant le concepteur de table, vous pouvez consulter le « Valeur par défaut ou Reliure » propriété - vous souhaitez définir ce à (CURRENT_TIMESTAMP) ou (GetDate()) (ils signifient la même chose). Ou dans l'Explorateur d'objets, vous pouvez regarder les contraintes sur la table - s'il y a un ensemble par défaut, il apparaîtra dans là.


également utile de signaler qu'un défaut est exactement comme il sonne - il n'y a rien pour empêcher quelqu'un fournir leur propre valeur pour cette colonne. Si vous voulez éviter cela, alors les déclencheurs sont probablement la réponse (bien que beaucoup de gens n'aiment pas les déclencheurs).

+0

s'il vous plaît vérifier la question que je l'ai mis à jour il – SmartestVEGA

0

Pas de, ce n'est pas le cas.

Soit vous devez spécifier un default comme

DECLARE @Table TABLE(
     ID INT, 
     LastDate DATETIME DEFAULT GETDATE() 
) 

INSERT INTO @Table (ID) SELECT 1 

SELECT * 
FROM @Table 

Ou utiliser triggers, ou mettre à jour les valeurs manuellement à l'aide GETDATE() dans votre INSERT/UPDATES

0

Certainement pas.

Vous pouvez utiliser DEFAULT être getdate() qui ajoutera votre datetime courant pour votre colonne

Si par défaut est sur une colonne, vous pouvez voir que dans vos contraintes de table. Vérifiez les propriétés de la table ou tapez sp_help <tablename>

+0

@ user106528 - Edité ma réponse à donner des détails sur l'endroit où vous pouvez trouver de la valeur par défaut définie sur la colonne –

0

Si vous utilisez l'option DEFAULT getdate(), vous devez désactiver les valeurs NULL pour cette colonne et si vous avez envoyé une valeur nulle, sql définira la valeur par défaut.

+0

DEFAULT sur la colonne cosion_structure_code DEFAULT sur la colonne incoete_flag DEFAULT sur la colonne pur_flag DEFAULT sur la colonne use_client_default_f_flag DEFAULT sur la colonne opel_code FOREIGN KEY FOREIGN KEY clé primaire (cluster) – SmartestVEGA

+0

ce sont mes contraintes dans ce last_modified_timestamp il n'y a pas coloumn – SmartestVEGA

0

Il semble que vous ayez besoin d'un déclencheur pour mettre à jour la date lorsqu'une mise à jour est effectuée.

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
-- ============================================= 
-- Author:  David Forck 
-- Create date: 12Nov10 
-- Description: Update last modified date 
-- ============================================= 
CREATE TRIGGER dbo.UpdateLastModified 
    ON dbo.table1 
    AFTER update 
AS 
BEGIN 


    SET NOCOUNT ON; 

update dbo.table1 
set last_modified_timestap=getdate() 
where ID in (select ID from inserted) 



END 
GO