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 :

Migration de ASA Sybase à MS SQL Server


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Migration de ASA Sybase à MS SQL Server
    Bonjour,
    Je galère sur un probleme :
    Voila je dois transformer des requetes a partir ASA sybase pour les rendre compatibles avec MS-SQL Server, Donc j'aimerai avoir l'equivalent des requetes ci-dessous en MS SQL server 2008 (T-SQL):
    REQUETE 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    create trigger dba.TBI_prod before insert order 1 on dba.prod
    referencing new as new_prod
    for each row
    begin
    set new_prod.util_creat=current user;
    set new_prod.util_MAJ=current user;
    set new_prod.date_creat=now(*);
    set new_prod.date_MAJ=now(*)
    End
    REQUETE 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create trigger dba.TBU_prod before update order 1 on dba.prod
    referencing new as new_prod
    for each row
    begin
    set new_prod.util_MAJ=current user;
    set new_prod.date_MAJ=now(*)
    End
    MErci d'avance

  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,

    Malheureusement je n'ai jamais pu travailler sous Sybase.
    Je vais néanmoins tenter de vous aider ...

    Je pense que votre premier trigger assure qu'en plus des valeurs que vous passez, les colonnes util_creat, util_MAJ, date_creat, date_MAJ sont aux valeurs que vous spécifiez dans le trigger.

    Il faut savoir qu'en SQL les triggers sont ensemblistes (pas de FOR EACH ROW) et qu'il n'existe pas de trigger BEFORE.
    Les trigger vous donnent accès à deux tables virtuelles qui ont strictement la même structure que la table cible de la mise à jour :

    - sur un INSERT : table virtuelle INSERTED, qui contient les nouvelles valeurs insérées dans la table
    - sur un DELETE : table virtuelle DELETED, qui contient les anciennes valeurs des lignes à supprimer
    - sur un UPDATE : tables virtuelles INSERTED et DELETED, contenant respectivement les nouvelles et les anciennes valeurs des lignes cibles de la mise à jour.

    Je vous propose donc d'utiliser un trigger INSTEAD OF.
    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
    18
    19
    20
    21
    CREATE TRIGGER TR_IOF_I_prod
    	ON dbo.prod
    INSTEAD OF INSERT
    AS
    BEGIN
    	INSERT INTO dbo.new_prod
    	(
    		mesColonnes,
    		util_creat,
    		util_MAJ,
    		date_creat,
    		date_MAJ
    	)
    	SELECT I.mesColonnes
    			I.util_creat = SUSER_NAME(),
    			I.util_MAJ = SUSER_NAME(),
    			I.date_creat = GETDATE(),
    			I.date_MAJ = GETDATE()
    	FROM INSERTED AS I
    	JOIN dbo.new AS N ON I.PK_new = N.PK_new
    END
    Et pour le second :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TRIGGER TR_IOF_U
    	ON dbo.prod
    INSTEAD OF INSERT
    AS
    BEGIN
    	UPDATE dbo.new
    	SET util_MAJ = SUSER_NAME(),
    		date_MAJ = GETDATE()
    	FROM dbo.new AS N
    	JOIN INSERTED AS I ON I.PK_new = N.PK_new
    END
    La fonction système SUSER_NAME() retourne le nom d'identification de l'utilisateur pour la connexion.
    Si cela ne fonctionne pas ou que ce n'est pas ce que vous cherchez, repostez en précisant

    @++

Discussions similaires

  1. SQL2K : Sybase vers SQL Server : pb Collation
    Par quenec dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/04/2006, 12h46
  2. Réponses: 3
    Dernier message: 23/01/2006, 12h02
  3. Migration Sybase Anywhere -> SQL Server 2005 Express
    Par bubi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 15h23
  4. [debutan] migration de données Oracle vers SQL SERVER 2000
    Par Mil00se dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 17/08/2005, 17h44
  5. Migration de données Oracle vers SQL server
    Par joul's dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 16/02/2005, 15h05

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