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

Administration Oracle Discussion :

Contrainte check nombre 4 chiffres et année date système


Sujet :

Administration Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web (en formation)
    Inscrit en
    Septembre 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web (en formation)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2014
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Contrainte check nombre 4 chiffres et année date système
    Bonjour,

    Quelqu'un saurait il comment je peux faire une contrainte check sur une colonne number (4) pour que la valeur soit entre 1900 et l'année de la date système ?

    Et aussi sur une colonne de date pour que la date entrée soit entre une date et la date système ?

    Sur une colonne number (4) pour que les 2 premiers chiffres soient 19 ou 20 ?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Qu'as-tu déjà essayé ?
    Quel problème rencontres-tu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Pour les deux premières questions, vous ne pouvez pas passer par une contrainte, mais vous devez créer un déclencheur.
    En effet, une fonction non déterministe telle que SYSDATE n'est pas admise dans une contrainte.

    Il faut avoir en tête que le déclencheur (par exemple AFTER INSERT or UPDATE) s'exécute à chaque modification de la ligne, alors que la contrainte sera réappliquée sur la table non seulement à chaque modification de la ligne, mais en plus lorsqu'on réactive la contrainte suite à une désactivation.

    Imaginons qu'on arrive à créer une contrainte CHECK(trunc(date_embauche)=trunc(sysdate))
    J'insère un nouveau salarié à la date d'aujourd'hui 4 mai. Tout va bien, la contrainte est respectée.
    Demain, je désactive puis je réactive la contrainte. J'aurai une violation car la date d'embauche (4 mai) n'est pas égale à SYSDATE, désormais 5 mai.

    C'est pour cela qu'une contrainte incluant SYSDATE n'est pas admise, et que vous devez à la place créer un déclencheur.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par gillout Voir le message
    Sur une colonne number (4) pour que les 2 premiers chiffres soient 19 ou 20 ?
    Pour cette dernière :
    CHECK (MA_COLONNE BETWEEN 1900 AND 2099)
    suffit !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre confirmé
    Homme Profil pro
    xxxxxxxxx
    Inscrit en
    Avril 2015
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : xxxxxxxxx

    Informations forums :
    Inscription : Avril 2015
    Messages : 394
    Points : 552
    Points
    552
    Par défaut Contrainte check nombre 4 chiffres et anées date système
    tu peux éssayer ceci :
    alter table nom_table add constraint nom_de_la_contrainte check (column_name >= 1900 );

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/03/2011, 08h32
  2. Réponses: 6
    Dernier message: 05/01/2009, 10h18
  3. Contrainte check pour type date
    Par chris_013 dans le forum SQL
    Réponses: 6
    Dernier message: 17/11/2008, 14h03
  4. [javascript]Nombre de 13 chiffre (millisecondes) en date
    Par lunart dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/01/2007, 10h29
  5. [Oracle 9i] contrainte CHECK sur le type date
    Par zchallal dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/06/2006, 11h34

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