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

Développement SQL Server Discussion :

Supression de champs et Dates


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 97
    Points : 85
    Points
    85
    Par défaut Supression de champs et Dates
    bonjour,

    Mon application est en C#.

    J'ai une base de données contenant une table avec trop de champs, mon but est de pouvoir supprimer ces champs par une contrainte de Date :

    - Si la Date de creation du champs 1 est supérieur à 48 heures, on le supprime.

    Mon problème c'est que je ne sait pas comment récupérer le champ
    "Date de creation"(de chaque champs) pour lui ajouter 48 heures et pour le comparer a la date actuelle.

    J'ai trouvé quelques requètes sur le site pour faire ma suppression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlCommand = "DELETE * FROM MaTable WHERE convert(varchar(10),CreationDate,111) <= " + TODAY.Date;
    Mais bon a part que sa va supprimer tout ce qui a été creer avant la Date "TODAY", cela me permet juste d'avoir un truc en attendant.

    Merci

    KevDeta

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Attention, supprimer une ligne et "supprimer" une valeur d'une colonne sont deux choses distinctes :

    - si vous supprimez une ligne, vous supprimez une occurrence de l'entité que la ou les tables représentent.
    Par exemple si vous supprimez un véhicule de la table qui les représente, cela signifie qu'il n'est plus dans votre parc.

    - si vous mettez une colonne d'une ligne à NULL, vous spécifiez qu'une occurence particulière de l'entité que la table représente n'a pas de valeur pour l'attribut que la colonne représente.
    Donc par exemple si vous avez une colonne qui représente les dimensions du toit ouvrant et que la voiture n'en a pas, cette colonne sera à NULL.

    D'autre part votre instruction est horrible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DELETE FROM dbo.maTable
    WHERE CreationDate < DATEADD(day, -2, GETDATE())
    Ce sera plus performant en plus d'être plus lisible

    Mettez cela dans une procédure stockée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE PROCEDURE sp_clean_ dbo.maTable
    	@_retain_days smallint
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	DELETE FROM dbo.maTable
    	WHERE CreationDate < DATEADD(day, @_retain_days, GETDATE())
     
    END
    Et le tour est joué

    @++

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 97
    Points : 85
    Points
    85
    Par défaut
    Merci beaucoup !
    C'est vrai que c'est assez efficace, j'ai une clé primaire sur une autre table qui entre en conflit, y'aurai t-il pas un moyen de forcer la suppresion ?, sinon je supprime la clé mais bon ...


    Bref merci comme même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Champ nommé "Date"
    Par Rakken dans le forum Administration
    Réponses: 5
    Dernier message: 16/11/2006, 14h08
  2. [MySQL] Qu'est-ce que je risque avec un champ nommé 'date' ?
    Par JackBeauregard dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/11/2006, 15h45
  3. Requete sur champ de date
    Par cryptorchild dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/09/2006, 16h45
  4. Réponses: 2
    Dernier message: 13/06/2006, 07h27
  5. Champs de date
    Par Romalafrite dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/07/2004, 18h17

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