Existe t il une version "réduite" du format datetime ?
Oui, smalldatetime mais c'est hors norme.
Existe t il l'équivalent du type enum sous mysql ?
Le type enum n'existe pas dans la langage SQL normalisé. il n'existe donc pas non plus dans SQL Server.
D'un autre coté, j'hésite a mettre un champ entier avec 1 pour janvier, 2 pour février, etc. mais je trouve tout ça crado.
N'importe quel type fera l'affaire avec une contrainte de domaine.
Exemple :
ALTER TABLE maTable ADD MOIS SMALLINT CHECK(MOIS BETWEEN 1 AND 12) DEFAULT 1 NOT NULL
Mieux une table de référence vous permettra d'être plus explicite et dans votre table vous mettrez une contrainte d'intégrité référentielle.
1 2 3 4 5 6 7 8 9
| CREATE TABLE dbo.T_R_MOIS_MOI
(MOI_ID SMALLINT NOT NULL PRIMARY KEY CHECK(MOI_ID BETWEEN 1 AND 12),
MOI_LIBELLE VARCHAR(16) NOT NULL)
INSERT INTO dbo.T_R_MOIS_MOI VALUES (1, 'Janvier')
...
INSERT INTO dbo.T_R_MOIS_MOI VALUES (12, 'Décembre')
ALTER TABLE MaTable ADD MOI_ID SMALLINT NOT NULL CONSTRAINT FK_MOIS FOREIGN KEY REFERENCES dbo.T_R_MOIS_MOI (MOI_ID) |
C'est ce qu'il y a de mieux !
A +
Partager