Chapter 3 Guide de référence du fichier de ressource de SGBD


Génération de script

Les instructions de génération de script sont disponibles dans la catégorie Script, sous les différentes catégories d'objet. Par exemple, dans Sybase ASA 8, l'instruction Create de la catégorie Table se présente comme suit :

create table [%QUALIFIER%]%TABLE% 
(
    %TABLDEFN%
)
[%OPTIONS%]

Cette instruction contient les paramètres de création de la table ainsi que le nom de son propriétaire et ses options physiques.

Mécanisme d'extension

Vous pouvez étendre des instructions de génération de script pour compléter la génération en utilisant les instructions d'extension. Le mécanisme d'extension permet de générer les instructions immédiatement avant ou après les instructions Create, Drop et Modify, et d'extraire ces instructions lors du reverse engineering.

Pour plus d'informations sur le reverse engineering d'instructions supplémentaires, reportez-vous à la section Reverse engineering de script.

Langage de génération par template (GTL)

Les instructions d'extension sont définies à l'aide du mécanisme de langage de génération par template (GTL) PowerAMC.

Une instruction d'extension peut contenir :

Pour plus d'informations sur le langage de génération par template (GTL) PowerAMC, reportez-vous au chapitre Personnalisation de la génération à l'aide du langage de génération par template.

Lors de la génération, les instructions et variables sont évaluées et le résultat est ajouté au script global.

Exemple 1

L'instruction d'extension AfterCreate est définie dans la catégorie Table pour compléter l'instruction Create de la table, en ajoutant des partitions à la table si la valeur de l'attribut étendu de la table le requiert.

AfterCreate est défini dans la syntaxe de GTL comme suit :

.if (%ExtTablePartition% > 1)
%CreatePartition%
go
.endif

La macro .if est utilisée pour évaluer la variable %ExtTablePartition%. Cette variable est un attribut étendu qui contient le nombre de partitions de la table. Si la valeur de %ExtTablePartition% est supérieure à 1, %CreatePartition% sera généré suivi de "go". %CreatePartition% est une instruction définie dans la catégorie Table comme suit :

alter table [%QUALIFIER%]%TABLE%
   partition %ExtTablePartition%

%CreatePartition% génère l'instruction de création du nombre de partitions de table spécifié dans %ExtTablePartition%.

Exemple 2

Vous créez dans Sybase ASE une instruction étendue pour créer automatiquement un login d'utilisateur avant l'exécution de l'instruction Create user. L'instruction BeforeCreate se présente comme suit :

sp_addlogin %Name% %Password%
go

Le login généré automatiquement aura le même nom que l'utilisateur et son mot de passe. Vous pouvez afficher un aperçu de l'instruction dans la feuille de propriétés de l'objet, l'instruction BeforeCreate apparaît avant l'instruction de création de l'utilisateur :


Instructions Modify

Vous pouvez également ajouter des instructions BeforeModify et AfterModify aux instructions modify standard.

Les instructions Modify sont exécutées afin de synchroniser la base de données avec la structure créée dans le MPD. Par défaut, la fonctionnalité de modification de base de données ne prend pas en compte les attributs étendus lorsqu'elle compare les changements effectués sur le modèle depuis la dernière génération. Vous pouvez contourner cette règle en ajoutant des attributs étendus dans l'élément de liste ModifiableAttributes. Les attributs étendus définis dans cette liste seront pris en compte dans la boîte de dialogue de fusion lors de la synchronisation de base de données.

Pour détecter qu'une valeur d'attribut étendu a été modifiée, vous pouvez utiliser les variables suivantes :

Par exemple, vous pouvez vérifier que la valeur de l'attribut étendu ExtTablePartition a été modifiée à l'aide de la syntaxe de GTL suivante :

.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%)

Si la valeur d'attribut étendu a été modifiée, une instruction étendue sera générée pour mettre à jour la base de données. Dans la syntaxe de Sybase ASE, l'instruction étendue ModifyPartition se présente comme suit, car en cas de changement de partition vous devez supprimer la précédente partition avant de la recréer :

.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%)
   .if (%NEWOBJECT.ExtTablePartition% > 1)
      .if (%OLDOBJECT.ExtTablePartition% > 1)
%DropPartition%
      .endif
%CreatePartition%
   .else
%DropPartition%
   .endif
.endif 

Pour plus d'informations sur le langage de génération par template (GTL) PowerAMC, reportez-vous au chapitre Personnalisation de la génération à l'aide du langage de génération par template.

 


Copyright (C) 2008. Sybase Inc. All rights reserved.