PDA

View Full Version : روش تغییر سورس Trigger در SQL Server2000



damanpak
دوشنبه 27 آذر 1391, 20:53 عصر
سلام به همه عزيزان؛
زمانی که ما توی بانک view یا procedure میسازیم میتونیم اونا رو ببینیم و سورسشون رو تغییر بدیم
حال تریگرها رو کجا میتونیم ببینیم و چطوری سورسشو تغییر بدیم؟

mohsen24000
دوشنبه 27 آذر 1391, 20:55 عصر
همون طور که خودتون اشاره کردید؛ همون طور که View و SP ها رو می بینید!
زیر مجموعه هر جدولی، لیست تریگرهای اون هم مشخصه.

کامروا
دوشنبه 27 آذر 1391, 20:56 عصر
سلام
Programmability -> Database Triggers

damanpak
دوشنبه 27 آذر 1391, 21:05 عصر
ممنون از توجه شما عزیزان
آقا محسن منظورتون از زیر مجموعه هر جدول چیست و تریگرها رو از کجا میتونم ببینم؟
جناب کامروا این گزینه ای که فرمودین توی اس کیو ال 2000 نیست

sasan_22
سه شنبه 28 آذر 1391, 01:05 صبح
سلام من هم سوالی داشتم تو این زمینه و اون اینکه :

چرا با وجود ریلیشن در جدول ها از تریگر استفاده باید کرد ؟؟؟؟؟؟؟؟
مگه خود ریلیشن نظارت نداره بر اعمال insert و delete
پس تریگر علنن کاربردش چیه؟؟؟ آیا تکمیل کننه ریلیشنه؟؟؟
و زمانی که ریلیشن رو دستی می نویسیم on delete cascade و on update cascade چیست؟؟؟

ممنون

zarifcomputer
سه شنبه 28 آذر 1391, 02:58 صبح
سلام من هم سوالی داشتم تو این زمینه و اون اینکه :

چرا با وجود ریلیشن در جدول ها از تریگر استفاده باید کرد ؟؟؟؟؟؟؟؟
مگه خود ریلیشن نظارت نداره بر اعمال insert و delete
پس تریگر علنن کاربردش چیه؟؟؟ آیا تکمیل کننه ریلیشنه؟؟؟
و زمانی که ریلیشن رو دستی می نویسیم on delete cascade و on update cascade چیست؟؟؟

ممنون

یکی از کاربرد های تریگر برای دیتا ماینینگ هست. فرض کنید مدیر یک سایت بخواد اطلاعات رفتاری کاربران خودشو به صورت آماری جمع آوری کنه. در این حالت میاد و بر روی تیبل های مورد نظرش و برای عملیات درج ، بروز رسانی و حذف رکورد های اون جدول تریگر مینویسه . مثلا تارخ و زمان عملیات انجام شده و آی پی و سایر اطلاعات دلخواه و اونها رو در یک جدول مخصوص این کار نگهداری میکنه.
البته میتونه کاربرد های دیگری هم داشته باشه که هر کسی میتونه به فراخور نیازش ازشون استفاده کنه.
ضمنا توانایی تریگر ربطی به ریلیشن نداره.

damanpak
سه شنبه 28 آذر 1391, 22:45 عصر
دوستان ممنون از توجه شما عزیزان
اما این تاپیک ها هیچکدوم جواب سوال من نبود هاااااااااااااااااااااااا ااااا

aslan
چهارشنبه 29 آذر 1391, 00:09 صبح
سلام به همه عزيزان؛
زمانی که ما توی بانک view یا procedure میسازیم میتونیم اونا رو ببینیم و سورسشون رو تغییر بدیم
حال تریگرها رو کجا میتونیم ببینیم و چطوری سورسشو تغییر بدیم؟

سلام

کلیک راست روی نام تیبل
All Tasks
Manage Triggers
انتخاب تریگر مورد نظر از کمبو باکس Name
اعمال تغییرات مورد نظر
OK

sasan_22
چهارشنبه 29 آذر 1391, 01:44 صبح
دوست عزیز چناب aslan تو SQL2008 همچین آیتمی نداریم توی task ??!?!?!?!?!!!
task رو فقط روی دیتا بیس داریم اونم manage database ecryption بجز این دیگه Manage نداریم؟!!!!
فکر کنم تریگرها رو باید با کوئری درست کرد . چندتا آیتم توی MSDN بدست آوردم شاید بکار بیاد
شکل کلی دستور :

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
CREATE TRIGGER [ schema_name . ]trigger_name
ON { table | view }
[ WITH <dml_trigger_option> [ ,...n ] ]
{ FOR | AFTER | INSTEAD OF }
{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

<dml_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::= assembly_name.class_name.method_nameTrigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE, or UPDATE STATISTICS statement (DDL Trigger)
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }

<ddl_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::= assembly_name.class_name.method_nameTrigger on a LOGON event (Logon Trigger)
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR| AFTER } LOGON
AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME < method specifier > [ ; ] }

<logon_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

<method_specifier> ::= assembly_name.class_name.method_name


انواعش :
1- DML Triggers
موارد استفاده در :
ALTER DATABASE
CREATE DATABASE
DROP DATABASE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG

2- DDL Triggers

این مثال DML

USE AdventureWorks;
GO
IF OBJECT_ID ('Sales.reminder1', 'TR') IS NOT NULL
DROP TRIGGER Sales.reminder1;
GO
-- This trigger raises a message whenever a row is inserted or modified in Sales.Customer.

CREATE TRIGGER reminder1
ON Sales.Customer
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Customer Relations', 16, 10);
GO


این مثال DDL

USE AdventureWorks;
GO

IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO

CREATE TRIGGER safety
ON DATABASE
FOR DROP_SYNONYM
AS
RAISERROR ('You must disable Trigger "safety" to drop synonyms!',10, 1)
ROLLBACK
GO

DROP TRIGGER safety
ON DATABASE;
GO

damanpak
چهارشنبه 29 آذر 1391, 02:12 صبح
دوست عزیز چناب aslan تو SQL2008 همچین آیتمی نداریم توی task ??!?!?!?!?!!!
task رو فقط روی دیتا بیس داریم اونم manage database ecryption بجز این دیگه Manage نداریم؟!!!!
فکر کنم تریگرها رو باید با کوئری درست کرد . چندتا آیتم توی MSDN بدست آوردم شاید بکار بیاد

آقا اصلان از کمکتون ممنون حل شد
جانب ساسان اگه به پست دوم همین صفحه مراجعه میکردین میدیدید که آقا کامروا واسه اس کیو ال 2008 رو توضیح دادن . توضیح آقا اصلان واسه اس کیو ال 2000 بود واسه 2008 :
مراجعه شود به اینجا (http://barnamenevis.org/showthread.php?374283-%D8%B1%D9%88%D8%B4-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%B3%D9%88%D8%B1%D8%B3-Trigger-%D8%AF%D8%B1-SQL-Server2000&p=1653194&viewfull=1#post1653194)