Dois-je utiliser le model de MS SQL Management Studio pour créer de nouveaux triggersurs?

Si vous créez un nouveau triggersur dans MS SQL Management Studio en utilisant l'interface graphique, il vous donne ce model:

--==================================== -- Create database sortinggger template --==================================== USE <database_name, sysname, AdventureWorks> GO IF EXISTS( SELECT * FROM sys.sortingggers WHERE name = N'<sortinggger_name, sysname, table_alter_drop_safety>' AND parent_class_desc = N'DATABASE' ) DROP TRIGGER <sortinggger_name, sysname, table_alter_drop_safety> ON DATABASE GO CREATE TRIGGER <sortinggger_name, sysname, table_alter_drop_safety> ON DATABASE FOR <data_definition_statements, , DROP_TABLE, ALTER_TABLE> AS IF IS_MEMBER ('db_owner') = 0 BEGIN PRINT 'You must ask your DBA to drop or alter tables!' ROLLBACK TRANSACTION END GO 

Devrais-je utiliser ce model?

Je ne sais rien sur les triggersurs, mais je pense que je dois les utiliser. Le but dans ce cas est que sur une insertion dans la table, j'ai besoin de mettre à jour l'un des champs.

S'il vous plaît, aidez-moi à démarrer!

OK pour commencer, c'est le mauvais model si vous voulez un triggersur ordinaire que l'on est un triggersur pour apporter des changements structurels à la table elle-même.

Si vous décidez de faire un triggersur qui affecte datatables (par opposition à la structure), il y a plusieurs choses que vous devez savoir. D'abord et de loin les plus critiques, les triggersurs fonctionnent sur des sets de données, pas une rangée à la fois. Vous devez écrire n'importe quel triggersur pour gérer plusieurs insertions.updates ou suppressions de lignes. Si vous vous retrouvez avec un code définissant la valeur insérée ou supprimée dans une variable, il y a 99% de chances que cela ne fonctionne pas correctement si plusieurs loggings sont impliqués.

Qu'est-ce qui est inséré ou supprimé, vous requestz-vous? C'est la prochaine chose que vous devez savoir sur les triggersurs, il y a deux pseudotables (insérés et supprimés) qui ne sont disponibles que dans un triggersur (ou une clause de sortie) contenant les nouvelles informations insérées ou les valeurs mises à jour (dans la table insérée ) et les anciennes informations sont supprimées ou modifiées par une mise à jour (dans la table supprimée). Donc, un insert a des valeurs dans inséré, un delete a des valeurs dans deleted et une mise à jour a des valeurs dans les deux. Utilisez-les dans votre triggersur pour tirer les valeurs dont vous avez besoin de changer.

Puisque vous ne savez rien sur les triggersurs, je dirais non, n'utilisez pas le model.

Lisez la page en ligne des livres pour Create Trigger et écrivez la gâchette à la main.

Il y a probablement plus dans ce code que ce dont vous avez réellement besoin. Lisez le manuel et restz simple.

Si vous ne savez rien sur les triggersurs, je vous suggère fortement de les lire avant de les implémenter. Obtenez des triggersurs bien et ils peuvent vous rendre la vie beaucoup plus facile; se tromper et les Triggers vous causeront beaucoup de problèmes.

Je suggère de commencer avec ce tutoriel

http://www.sqlteam.com/article/an-introduction-to-sortingggers-part-i

Vous pouvez utiliser le SQL ci-dessus comme model ou vous pouvez simplement écrire le vôtre. Je vous suggère d'écrire le vôtre, car vous comprendrez ce que vous faites. Évidemment, faites-le seulement après avoir fait une lecture sérieuse sur les triggersurs. Découvrez également MSDN