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

Langage SQL Discussion :

UPDATE automatique dès la date passée


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 8
    Points
    8
    Par défaut UPDATE automatique dès la date passée
    Bonjour,

    J'ai eu beau cherché sur les forums mais je n'ai pas trouvé d'où ma problématique suivante:

    J'ai une table SQL avec un certain nombre de colonne donc une colonne "date" et une colonne "etat". Je voudrais de façon automatique, que mon état soit UPDATE (par exemple qu'il passe de "A venir" qui est la valeur par défault à "Evenement passé") dès que la date est atteinte.
    Utiliser un trigger peut être mais où et comment ?

    Merci d'avance pour vos réponses.
    Je suis débutant.
    Maxime.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Un trigger non, puisqu'il faut un ordre pour le déclencher

    Par ailleurs, je ne vois pas bien l'intérêt de la mise à jour de cette colonne, si la date seule, suffit à déterminer que l'échéance est atteinte

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Car je récupère l'état pour l'afficher dans un tableau, il n'y a donc pas de solution automatique ?

  4. #4
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    c'est dans votre tableau qu'il faut faire la modification.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Cette information ne doit pas être stockée en base, c'est une donnée calculée.

    Appuyez vous sur une vue.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 716
    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 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par davok Voir le message
    Bonjour,

    J'ai eu beau cherché sur les forums mais je n'ai pas trouvé
    Vous avez sans doute très mal cherché

    d'où ma problématique suivante:

    J'ai une table SQL avec un certain nombre de colonne donc une colonne "date" et une colonne "etat". Je voudrais de façon automatique, que mon état soit UPDATE (par exemple qu'il passe de "A venir" qui est la valeur par défault à "Evenement passé") dès que la date est atteinte.
    Utiliser un trigger peut être mais où et comment ?
    Aucune des réponses apporté n'est adéquate. En effet chacune des réponses se basent sur du traitement alors qu'il est possible de ne faire aucun traitement pour répondre à votre demande.
    Cela dit, cela prouve que tous les internautes qui vous ont proposé leurs concours en savent pas plus que vous... Et c'est navrant.

    PRINCIPE DE BASE :
    Toute application scrutant une base de données relationnelle ne devrait accéder qu'à des vues, jamais directement à des tables !

    Dès lors il suffit de définir une vue comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW V
    AS
    SELECT *, CASE WHEN MA_DATE > CURRENT_DATE THEN 'À venir' ELSE 'Passé' END AS EVENEMENT
    FROM   MA_TABLE
    Vous n'avez donc aucune colonne redondante à rajouter et aucun traitement particulier à prévoir.

    Bref, apprenez le langage SQL et les bases de données relationnelles, mon livre :
    http://www.amazon.fr/SQL-%C3%A9ditio...ds=sql+brouard
    Comme mon site web :
    http://sqlpro.developpez.com/
    peuvent vous y aider


    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/ * * * * *

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 059
    Points : 38 269
    Points
    38 269
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par SQLpro Voir le message

    Aucune des réponses apporté n'est adéquate. En effet chacune des réponses se basent sur du traitement alors qu'il est possible de ne faire aucun traitement pour répondre à votre demande.
    Cela dit, cela prouve que tous les internautes qui vous ont proposé leurs concours en savent pas plus que vous... Et c'est navrant.
    Il faudrait relire les réponses plus attentivement, car ce n'est pas le cas
    - De mon coté j'ai seulement demandé pourquoi utiliser la colonne état plutôt que directement la date
    - Et Punkoff a déjà proposé la solution qui consiste à utiliser une vue

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

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

    Informations forums :
    Inscription : Avril 2015
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    je suis sans doute mauvais alors, mais merci pour votre réponse.

    PRINCIPE DE BASE :
    Toute application scrutant une base de données relationnelle ne devrait accéder qu'à des vues, jamais directement à des tables !
    Il faut croire que les profs ne sont pas capables de nous le dire. En tout cas dans nos projets, l'application accède directement à des tables
    La prochaine fois ...

  9. #9
    Membre actif
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    311
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 311
    Points : 257
    Points
    257
    Par défaut
    Bonjour,

    @davok les "principes de base" des administrateurs de bases de données sont parfois loin des préoccupations des cdp/développeurs.
    Ce sont des bonnes pratiques (meilleurs pratiques même) mais ne sont pas toujours nécessaires...

    Sans vouloir m'attirer les foudres des experts de ce forum, j'aimerais savoir le pourcentage d'applications professionnelles qui fonctionnent sans l'application de cette bonne pratique ! Je ne doute pas qu'on est bien au-dessus des 80%. Certes cela a un coût de maintenance (quoi que entre "modifier une vue + le code" et "juste le code"...), mais le coût du dba/de l'expert au début du projet n'est pas non plus négligeable.

    A+

  10. #10
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 144
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Pourquoi ne pas passer par une donnée calculée ?

    Code sql : 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
    18
    19
    20
    21
    22
    23
     
    create table dummydate
    (
    	id int identity not null primary key,
    	dte date not null,
    	flag as case when getdate() >= dte then 'Echu' else 'A venir' end -- C'est là que c'est intéressant
    );
    go
     
    -- Alimentation de la table
    with cte
    as
    (
    	select 1 nb
    	union all
    	select nb + 1 from cte where nb < 10
    )
    insert into dummydate (dte)
    select dateadd(day, nb - 5, getdate())
    from cte;
     
    -- Et la magie au moment de la lecture !
    select * from dummydate;

    L'avantage, c'est qu'on n'a rien à déclencher : les valeurs contenues dans la colonne évoluent toutes seules à mesure que le temps passe...
    On ne jouit bien que de ce qu’on partage.

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 716
    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 716
    Points : 52 380
    Points
    52 380
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Pourquoi ne pas passer par une donnée calculée ?
    Ce n'est pas standard et pas supporté par la majorité des SGBDR.

    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/ * * * * *

Discussions similaires

  1. Trigger update automatique suivant la date
    Par sasafca dans le forum SQL
    Réponses: 15
    Dernier message: 02/08/2013, 20h49
  2. Ajout automatique de la date..
    Par Karibou dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 02/02/2006, 10h34
  3. [MySQL] Refresh automatique d'une date
    Par glloq8 dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 11h16
  4. Démarrer automatiquement une session avec pass
    Par cyberman.inc dans le forum Windows XP
    Réponses: 3
    Dernier message: 07/08/2005, 18h55
  5. date passée
    Par nmerydem dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2004, 14h22

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