Bonjour,
comment puis je faire pour créer un champ par exemple 'Structure' nvarchar(50) et je ne souhaite que l'on puisss y insérer que "SARL" ou "EURL" ou "SAS"
en fait comment faire un check dans sql manager studio 2008 ?
merci
Bonjour,
comment puis je faire pour créer un champ par exemple 'Structure' nvarchar(50) et je ne souhaite que l'on puisss y insérer que "SARL" ou "EURL" ou "SAS"
en fait comment faire un check dans sql manager studio 2008 ?
merci
Bonjour,
Tout d'abord, pourquoi utiliser le type NVARCHAR ? Cela consomme 2 octets pour tout caractère puisque vous stockez les chaînes en unicode.
Si vous utilisez VARCHAR, vous n'utiliseriez qu'un seul octet par caractère.
N'utilisez les types NCHAR et NVARCHAR que lorsque vous avez besoin de stocker des caractères non-latins (chinois, japonais, coréen, thaï, arabe, hébreux, arménien ...)
Pour votre contrainte de domaine, vous pouvez exécuter, dans SQL Server Management Studio :
Mais vous pouvez allez plus loin en écrivant une fonction pour cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE maTable ADD Structure VARCHAR(5) NOT NULL CONSTRAINT CHK_maTable_Structure CHECK (Structure NOT IN ('SARL', 'EURL', 'SAS'))
Et ensuite, pour votre table :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE FUNCTION Fn_Check_Structure_Nom @nomStructure VARCHAR(5) RETURNS BIT WITH SCHEMABINDING AS BEGIN RETURN CASE WHEN @nomStructure IN ('SARL', 'EURL', 'SAS') THEN CAST(0 AS BIT) ELSE 1 END END
Ainsi si vous devez retirer ou ajouter une valeur pour votre contrôle, il vous suffit de mettre à jour la fonction, pas la contrainte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE maTable ADD Structure VARCHAR(5) NOT NULL CONSTRAINT CHK_maTable_Structure CHECK(dbo.Fn_Check_Structure_Nom(Structure) = 1)
Vous pouvez aussi utiliser cette fonction pour interroger une table de valeurs interdites pour votre contrainte ...
@++![]()
OUAH!!! merci pour cette réponse ultra compléte et surtout merci d'avor mis un exemple![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager