2010-10-06 2 views

Répondre

3

Essayez d'utiliser getDate() au lieu

+0

il dit que j'ai besoin d'une constante, expression constante, ou variable après défaut. – jonjonjonjuice

+0

C'est surprenant, je suis sûr que je l'ai utilisé (pour une définition de table), comme écrit ici http://vista.intersystems.com/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_getdate Sauf si vous êtes ne pas utiliser Sybase ASE? –

7

en utilisant getDate() est une solution valide, vous devez avoir une erreur de syntaxe. Essayez-le comme ceci:

create table test_tbl (
    date_data DATETIME default getDate() NOT NULL 
) 
+0

cela ne satisfait pas à la "date/heure actuelle de l'insertion de ligne". Il mettra à jour la date à laquelle la ligne est modifiée comme documenté [ici] (http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc00170.1540/doc/html/san1288042837002 .html) pour Sybase IQ: "La valeur est mise à jour avec la date et l'heure actuelles chaque fois que la ligne est mise à jour." –

+0

Il est à noter que (contrairement à Sql Server) l'ordre des parties de la spécification de colonne est important: "date_data DATETIME par défaut getDate() NOT NULL" est valide; alors que "date_data DATETIME NOT NULL par défaut getDate()" ne l'est pas. – Badgerspot

2

DEFAULT GETDATE() est correct. l'affaire n'est pas pertinente; Un cas mixte peut indiquer une méthode Java, mais il s'agit d'une fonction TSQL droite. S'il vous plaît signaler l'erreur exacte msg si vous voulez plus d'aide.

En outre, la méthode ALTER TABLE définit la valeur par défaut pour futurs INSERTS; Si vous voulez modifier les données existantes, vous devez mettre à jour (bon pour les petites tables) ou décharger/recharger la table (demandé pour les grandes).

Regardez la valeur NULL/NOT NULL: vous ne voulez pas changer cela sans comprendre. Encore une fois, le problème existant/futur doit être résolu. NOT NULL empêche que NULL soit explicitement passé en tant que valeur INSERT VALUE.

+0

Mais comment l'obtenez-vous de ne pas mettre à jour la date sur les mises à jour comme il le fait avec le mot-clé "courant"? –

1

CURRENT_DATE est un standard SQL qui n'est pas adopté universellement. Comme indiqué ailleurs, la fonction T-SQL de getdate() doit être utilisée à la place.

Questions connexes