IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

probleme de codification


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut probleme de codification
    bonjour

    j'ai une table produit
    produit(codpro,nompro,datpro,lieupro)

    je veux codifier le code de produit comme ça:
    la premiere position de ce code est le 1er car de champ (lieupro)et a l'insertion je fait seulement la fonction 'default'.
    voila ma requete:

    create table produit

    (nompro char(10),datpro datetime,lieupro char(15),

    prixpro decimal(16,2),codpro char(1) default substring(lieupro,1,1))

    mais elle m'affiche ette erreur:
    The name 'lieupro' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.

    je vous remerci d'avance

  2. #2
    Membre à l'essai Avatar de Ch0n
    Homme Profil pro
    Leader Technique .NET
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Je te conseille de regarder au niveau des champs précalculé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    codpro  AS (substring(lieupro,1,1))PERSISTED


  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    bonjour

    j'ai fait comme ça :
    create table produit

    (nompro char(10),datpro datetime,lieupro char(15),

    prixpro decimal(16,2),codpro AS (substring(lieupro,1,1))PERSISTED)

    mais toujour il y a une erreur la viola:

    Incorrect syntax near 'PERSISTED'

  4. #4
    Membre à l'essai Avatar de Ch0n
    Homme Profil pro
    Leader Technique .NET
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Tu as essaié sans PERSISTED ?

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    bonjour

    oui elle marche tré bien mais je veux savoir quel est le type de ce code
    parceque j'ai codifier ce dernier avce le nombre de produit et l'anne de production
    EXP
    F-2007-10
    F==>lieu(france)
    2007=>année
    10==>nombre de produit de l'anneé 2007

    voila ma requete

    create table produit

    (nompro char(10),datpro datetime,lieupro char(15),

    prixpro decimal(16,2),codpro AS (substring(upper(lieupro),1,1))+'-'+

    substring(convert(varchar(10),getdate(),103),7,10)+'-'+count(*))

  6. #6
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    voila l'erreur

    Subqueries are not supported in COMPUTED COLUMN constraints, table 'produit'

  7. #7
    Membre à l'essai Avatar de Ch0n
    Homme Profil pro
    Leader Technique .NET
    Inscrit en
    Mars 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 13
    Points : 18
    Points
    18
    Par défaut
    Le count(*) pose problème tu ne peux pas mettre ceci dans un champs calculé

  8. #8
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    comment on ajoute dans le code le nombre de de produit de chaque anneé

  9. #9
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Plutôt que de vouloir mettre une valeur calculée par défaut, pourquoi ne ferais-tu pas un TRIGGER ON INSERT ?

  10. #10
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    bonjour

    je suis débutant en sql server et je sais pas comment on creé un trigger on insert

    je vous remerci

  11. #11
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Points : 53
    Points
    53
    Par défaut
    bonjour

    j'ai une erreur sur le code primaire c'est a dir je ne peut pas définir le codpro
    comme un code primaire
    voila ma requete:
    create table produit

    (codpro as substring(lieupro,1,1), nompro char(10),datpro datetime,lieupro

    char(15),prixpro decimal(16,2),codfour integer,

    constraint ver_codpro primary key(codpro),

    constraint ver_nompro unique (nompro),

    constraint ver_lieupro check(lieupro in('france','japan','united stats')))

    voila l'erreur:
    Cannot define PRIMARY KEY constraint on nullable column in table 'produit'

    je vous remerci

  12. #12
    Nouveau membre du Club
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Points : 25
    Points
    25
    Par défaut


    Bon, pour que tu avances un peu, essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CREATE TABLE produit
    (idpro   integer IDENTITY(1,1) NOT NULL
    ,codpro  as CAST(SUBSTRING(lieupro,1,1)+'-'+CAST(year(datpro) AS char(4))+'-' AS char(20)) PERSISTED
    ,nompro  char(10) NOT NULL
    ,datpro  datetime DEFAULT GETDATE() NOT NULL
    ,lieupro char(15) NOT NULL
    ,prixpro float
    ,codfour integer
    ,CONSTRAINT ver_codpro PRIMARY KEY(idpro)
    ,CONSTRAINT ver_nompro UNIQUE (nompro)
    ,CONSTRAINT ver_lieupro CHECK (lieupro IN('france','japan','united states'))
    )
     
    INSERT INTO produit (nompro, lieupro, prixpro, codfour)
    VALUES('MonProduit', 'france', 12.15, 0123)
     
    SELECT * FROM produit
    Tu ne peux pas mettre ton champ calculé en clé primaire, on fait donc un 'compteur' ou 'numéro automatique' ou 'incrément' (appelle ça comme tu veux) en lieu et place de ton [codpro].
    Ensuite, il ne faut pas oublier de mettre 'NOT NULL' sur les champs concernés (c'est à dire qu'il y aura obligatoirement une valeur dans ce champ).
    Pour le champ date, par défaut, on met la date du jour (je pense que c'est ce que tu veux ? Sinon, il suffit de retirer le 'default getdate()', mais je te conseillerais de laisser le NOT NULL puisque cette colonne sert pour ton champ calculé).

    Du coup, ton champ calculé est presque calculé, mais je suis pas sûr d'avoir compris le dernier membre...

Discussions similaires

  1. [Tableaux] Probleme de codification !
    Par crazyden dans le forum Langage
    Réponses: 7
    Dernier message: 14/12/2007, 22h14
  2. Probleme de rafraichissement d'un BDGrid
    Par marmotte dans le forum Bases de données
    Réponses: 10
    Dernier message: 28/05/2004, 18h07
  3. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01
  4. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  5. [Kylix] Probleme de nombre flottant!!
    Par yopziggy dans le forum EDI
    Réponses: 5
    Dernier message: 02/05/2002, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo