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 :

trigger ou procedure stockée pour remplir une table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Par défaut trigger ou procedure stockée pour remplir une table
    Bonjour,
    SVP,pourriez vous me dire la solution la plus adaptée.

    Je dois comparer les champs de deux tablesvet à chaque fois,ils ne sont pas egaux,je remplis une autre table que je dois créer aussi
    voici la table à créer :

    [
    if not exists (select * from sysobjects where name='DELTA_ACCESS_details' and xtype='U')
    create table DELTA_ACCESS_detail (
    ID_DELTA_detail_PK int identity primary key,
    SOURCE_NAME_FK [VARCHAR] (5) NULL,
    DWH_TECHNICAL_ID [bigint] NULL,
    FUNCTIONAL_ID [NVARCHAR] (255) NULL,
    FILE_SOURCE_ID [nvarchar](255) NULL,
    COLUMN_NAME_SOURCE [char] (255) null,
    COLUMN_NAME_DESTINATION [varchar] (255) null,
    COLUMN_NAME_SOURCE_VALUE [varchar] (255) null,
    COLUMN_NAME_DESTINATION_VALUE [char] (255) null,
    BUILD [NVARCHAR](10) null ,
    DATE datetime null);
    truncate table DELTA_ACCESS_Detail;
    ]

    et voici la requete qui compare les champs :
    [
    select *
    from WISE2_ODS.Extraction.IBO_1027_Access a,WISE2_DWH.DBO.dt_Access d

    where d.ACC_source_id=a.source_id
    and d.acc_source_name_fk=a.source_name_fk
    and ( a.Name !=d.ACC_NAME
    or a.Technical_Reference!=d.ACC_TECH_REF
    or a.Webex_Password!=d.ACC_WEB_PASSWORD
    or a.Platform_reference!=d.ACC_BRIDGE_REF
    or d.ACC_BILL_REF!=NULL
    or a.Moderator_PIN!=d.ACC_MODERATOR_PIN
    or a.Participant_PIN!=d.ACC_MODERATOR_PIN
    or a.Creation_Date!=d.ACC_CREA_DATE_DAT
    or a.Source_ID!=d.ACC_SOURCE_ID
    or a.Webex_Password!=d.ACC_WEB_PASSWORD
    or year(a.Creation_Date)!=d.ACC_YEAR_CREA_DATE
    or month(a.Creation_Date)!=d.ACC_MONTH_CREA_DATE
    or datepart(iso_week,a.Creation_Date)!=d.ACC_WEEK_CREA_DATE
    or month((a.Creation_Date))!=month(d.ACC_YEAR_MONTH_CREATION)
    or year((a.Creation_Date))!=year(d.ACC_YEAR_MONTH_CREATION)
    or a.Creation_Date!=d.ACC_REAL_CREATION_DATE
    or a.Category!=d.ACC_TYPE
    or a.Extended_Technical_Reference!=d.ACC_TECH_REF_EXTENDED
    or a.Billing_Code!=d.ACC_BILLING_CODE
    or a.Is_Trial_Flag!=d.ACC_IS_TRIAL
    or a.ExternalRef!=d.ACC_EXT_REF);
    ]

    Je vous serai reconnaissant si vous me faîtes de suggestions rapides

    Bonne journée

  2. #2
    Invité de passage
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Par défaut
    Bonjour Khalid,

    Pourrais tu reformuler ta question ?
    Que souhaites tu faire exactement ?

    Pour ma part une procédure stockée serait plus logique pour l'insertion.
    Un trigger se déclenche suivant un évènement et serait inutile dans ton cas.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Par défaut détails
    je dois comparer les champs d'une table source avec une table destination, les champs de la source subissent des transformations et sont stockés dans une table destination mais avec des noms de champs différents.

    ex: si tableSource.champ1!=tableDest.champ1bis,dans ce cas là,je remplis une table que j'ai appelé DELTA_ACCESS_detail.

    Autre détail,c'est que je crée autant de lignes dans DELTA_ACCESS_detail que les champs qui ne sont pas ègaux pour le même tuple.
    si il y a 5 champs non égaux dans le même tuple,j'aurai 5 tuples dans DELTA_ACCESS_detail et ainsi de suite.

    J'espère que je me suis bien exprimé..

    Merci pour votre aide

    Bonne journée

  4. #4
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Octobre 2012
    Messages : 7
    Par défaut début d'une procedure
    je viens de commencer la création d'une procedure et voici le début

    %
    USE [TEST_REPORTS]
    GO
    /****** Object: StoredProcedure [dbo].[SP_Generate_Delta_Access_Detail] Script Date: 10/01/2012 16:14:40 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO


    ALTER PROCEDURE [dbo].[SP_Generate_Delta_Access_Detail] @version_build NVARCHAR(10)
    AS

    Declare @build nvarchar(10)
    set @build=@version_build

    if not exists (select * from sysobjects where name='DELTA_ACCESS_DETAIL' and xtype='U')
    create table DELTA_ACCESS_detail (
    ID_DELTA_detail_PK int identity primary key,
    SOURCE_NAME_FK [VARCHAR] (5) NULL,
    DWH_TECHNICAL_ID [bigint] NULL,
    FUNCTIONAL_ID [NVARCHAR] (255) NULL,
    FILE_SOURCE_ID [nvarchar](255) NULL,
    COLUMN_NAME_SOURCE [char] (255) null,
    COLUMN_NAME_DESTINATION [varchar] (255) null,
    COLUMN_NAME_SOURCE_VALUE [varchar] (255) null,
    COLUMN_NAME_DESTINATION_VALUE [char] (255) null,
    BUILD [NVARCHAR](10) null ,
    DATE datetime null);
    truncate table DELTA_ACCESS_Detail;

    -- Comparaison entre les champs de la table Access et les champs de la table DT_Access
    -- et insertion dans Delta_Access_Detail

    insert into DELTA_ACCESS_detail(SOURCE_NAME_FK,DWH_TECHNICAL_ID,FUNCTIONAL_ID,FILE_SOURCE_ID,
    COLUMN_NAME_SOURCE,COLUMN_NAME_DESTINATION,COLUMN_NAME_SOURCE_VALUE,
    COLUMN_NAME_DESTINATION_VALUE,BUILD,DATE) (
    select *
    from WISE2_ODS.Extraction.IBO_1027_Access as a inner join WISE2_DWH.DBO.dt_Access as d
    on d.ACC_source_id=a.source_id
    and d.acc_source_name_fk=a.source_name_fk
    and ( a.Name !=d.ACC_NAME
    or a.Technical_Reference!=d.ACC_TECH_REF
    or a.Webex_Password!=d.ACC_WEB_PASSWORD
    or a.Platform_reference!=d.ACC_BRIDGE_REF
    or d.ACC_BILL_REF!=NULL
    or a.Moderator_PIN!=d.ACC_MODERATOR_PIN
    or a.Participant_PIN!=d.ACC_MODERATOR_PIN
    or a.Creation_Date!=d.ACC_CREA_DATE_DAT
    or a.Source_ID!=d.ACC_SOURCE_ID
    or a.Webex_Password!=d.ACC_WEB_PASSWORD
    or year(a.Creation_Date)!=d.ACC_YEAR_CREA_DATE
    or month(a.Creation_Date)!=d.ACC_MONTH_CREA_DATE
    or datepart(iso_week,a.Creation_Date)!=d.ACC_WEEK_CREA_DATE
    or month((a.Creation_Date))!=month(d.ACC_YEAR_MONTH_CREATION)
    or year((a.Creation_Date))!=year(d.ACC_YEAR_MONTH_CREATION)
    or a.Creation_Date!=d.ACC_REAL_CREATION_DATE
    or a.Category!=d.ACC_TYPE
    or a.Extended_Technical_Reference!=d.ACC_TECH_REF_EXTENDED
    or a.Billing_Code!=d.ACC_BILLING_CODE
    or a.Is_Trial_Flag!=d.ACC_IS_TRIAL
    or a.ExternalRef!=d.ACC_EXT_REF))

    ;
    %

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2009, 19h04
  2. Procédure stockée pour créer une table.
    Par Khaoula.85 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 13/03/2009, 20h15
  3. Procedure stockée pour effacer plusieurs tables
    Par devalender dans le forum SQL
    Réponses: 3
    Dernier message: 25/02/2009, 20h33
  4. procédure stocké pour backuper une table
    Par zaki_1982 dans le forum Administration
    Réponses: 4
    Dernier message: 08/01/2009, 09h14
  5. Réponses: 2
    Dernier message: 22/10/2008, 13h14

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