نمایش نتایج 1 تا 24 از 24

نام تاپیک: اموزش:ایجاد تریگرها و مثالهای مختلف

  1. #1
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    Post اموزش:ایجاد تریگرها و مثالهای مختلف

    سلام دوستان قصدم از زدن این تاپیک این بود که هم خودم وهم شما یه سری مطلب(که با کمک شما دوستان باید تکمیل بشه بود) پس همه با هم شروع میکنیم
    تریگر چیست؟؟؟؟؟؟؟؟؟؟؟
    تریگر در واقع مثل یه رویداد میمونه که برای یک جدول مینویسیم که اگر یکی از اعمال Delete یا Insert یا update روی جدول مورد نظر اتفاق افتاد ،این رویداد اجرا بشه.
    مثلا برای یک جدول یک تریگر مینویسید که اگر عمل insert روی جدول اتفاق افتاد تعداد رکوردها رو برگردونه و یا ...
    به طور پیش فرض کلیه تریگرهای جدول پس از تغییرات جدول فعال میشوند این تریگرها AFTER نام دارند
    تریگرهای دیگری نیز وجود دارند که INSTED OF نامیده میشوند و به جای تغییر در دادههای مورد نظر این تریگر فعال میشود
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    برای ایجاد تریگر 2 راه وجود داره 1: از طریق کدنویسی در اس کیوال سرور
    2:از طریق خود نرم افزار اس کیوال سرور
    که ما قصد داریم روش اول یعنی کد نویسی رو با هم کار کنیم
    برای ساخت تریگر از دستور
    CREATE TRIGGER  

    استفاده میشود
    برای اولین مثال ما میخواهیم تریگری بر روی یک جدول ایجاد کنیم که در هنگام حذف اطلاعات از یه جدول به نام NBH این تریگر فعال شود
    CREATE TRIGGER BENYAMIN 
    ON NBH
    FOR DELETE AS
    RAISERRORPRINT'DELETE'

  2. #2
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    این هم یه تریگر دیگه واسه شما دوستان عزیز و گرامی فقط شما هم همکاری کنید و مطلبی یا مثالی در این مورد جور کنید و در این تاپیک بگذارین به هر حال هم بدرد من میخوره و هم به درد شما به خدا من هم مثل خیلیها تازه کارم ????????????????????????????
    این تریگر بعد از اضافه شدن رکورد در جدول فعال میشود
    CREATE TRIGGER BEB
    ON ABC
    FOR INSERT
    AS
    PRINT 'ECORD INSERT'

    حال پس از اجرای دستورات این دستور را اجرا کنید
      INSERT INTO ABCVALUES('BENYAMIN')    

    در این مثال از جدولی به نام ABC استفاده شده که یک فیلد نام فقط دارد
    دوستان شما هم کمک کنید دیگه

  3. #3
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    تریگرهای INSTAED OF : هنگام استفاده از این نوع تریگرها 'به جای دستورات کاربر دستورات تریگر اجرا میشوند به عنوان مثال فرض کنید تریگری برای یکی از جداولتان مینویسید تا به کار بر اطلاع دهد که نمیتواند در این جدولی رکوردی را حذف یا مثلا اضافه کند و.. این کار با استفاده از تریگر INSTEAD OF قابل اجرا است
    حال بریم یه مثالی بزنیم :
     
    CREATETRIGGER RT
    ON ABC
    INSTEAD OF DELETE AS
    PRINT'CAN NOT DELETE '

    حال بیایید و این دستور رو اجرا کنید مشاهده خواهید کرد که اون رکورد مورد نظر حذف نمیشود دوستان من خودم هم دارم تمرین میکنم و نتیجه کار رو برای شما مینویسم این یعنی که این مثالها درست هستن

    DELETEFROM ABC
    WHERE PID='22'

    دوستان عزیز خواهشا شما هم یه لطفی کنید و مثالی مطلبی رو در مورد این مبحث اینجا بگذارید

  4. #4
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    سلام با با شما بروبچه ها خیلی با حالید من این همه التماس کردم شما هم یه نیمچه شرکتی کنید والا به خدا ضرر نمیکنید بگذریم بازم اومدم تا یه مثال دیگه براتون بزنم
    فرض کنید بخواهیم در جدولی که مخصوص دانشجویان است تریگری بنویسیم که پس از (دقت کنید پس از ) اضافه کردن رکوردی تعداد دانشجویان را بر گرداند
     CREATE TRIGGER TGST 
    ON STUDENT
    AFFTER INSERT
    AS
    SELECT COUNT (STDNO) FROM STUDENT

  5. #5

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    اگر این تریگر را روی database بنویسید دیگه نمیشه تغییراتی داخل database انجام داد

    CREATE TRIGGER TRIGGER_DROPTABLE
    ON DATABASE
    FOR DROP_TABLE,CREATE_TABLE,ALTER_TABLE,CREATE_PROCEDU RE, ALTER_PROCEDURE, DROP_PROCEDURE,DROP_TRIGGER,CREATE_TRIGGER,ALTER_T RIGGER,DROP_VIEW,CREATE_VIEW,ALTER_VIEW
    AS
    PRINT 'شما نمی توانید تغييراتي در پایگاه ايجاد کنيد'
    ROLLBACK


  6. #6

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    نقل قول نوشته شده توسط oliya24 مشاهده تاپیک
    سلام با با شما بروبچه ها خیلی با حالید من این همه التماس کردم شما هم یه نیمچه شرکتی کنید والا به خدا ضرر نمیکنید بگذریم بازم اومدم تا یه مثال دیگه براتون بزنم
    فرض کنید بخواهیم در جدولی که مخصوص دانشجویان است تریگری بنویسیم که پس از (دقت کنید پس از ) اضافه کردن رکوردی تعداد دانشجویان را بر گرداند
     CREATE TRIGGER TGST 
    ON STUDENT
    AFFTER INSERT
    AS
    SELECT COUNT (STDNO) FROM STUDENT
    با توجه به گفته شما میخوام ببینم مقدار بازگشتی این trigger را می توان داخل برنامه استفاده کرد یعنی مثلا داخل یک متغیر داخل برنامه ریخت

  7. #7
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    ددستور rollback چه کاری رو انجام میده لطفا توضیح دهید

  8. #8

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    یعنی هر عملی که انجام دادیم CREATE,Dropو... را لغو میکند
    مثل کد زیر که مانع update,delete در جدول می شود

    create trigger MyTrigger
    on table1
    WITH ENCRYPTION
    instead of update,delete
    as
    begin
    Print 'این جدول غیر قابل تغییر است'
    ROLLBACK
    end

  9. #9
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    با تشکر از دوست عزیز مان که ما را در مطالب این تاپیک کمک میکنه من تازه در book online بودم و به دو مورد به نامهای فعال کردن وغیر فعال کردن تریگرها برخورد کردم :خودمونیم شاید یه وقتی نخواستیم برای یک لحظه از تریگر بکار برده شده استفاده کنیم پس دستور

    غیر فعال کردن تریگر را بدین شکل مینویسیم من بر روی جدولی به نام bv تست کردم و درست هم بود پس بریم :
    disable trigger my_trigger 
    on bv
    go

  10. #10
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    و برای فعال کردن تریگر مربوطه از فرمان زیر در همان جدول مربوطه استفاده میکنیم بدین نحو که:
    enable trigger my_trigger on bv 
    go

    دوستان یک نفر به جمع ما اضافه شده و ما رو همیاری میکنه پس لطفا شما هم ما رو در این تاپیک همراهی کنید به خدا جالب تر از این هم میشه
    با تشکر

  11. #11

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    نقل قول نوشته شده توسط karimi.ali2005 مشاهده تاپیک
    یعنی هر عملی که انجام دادیم CREATE,Dropو... را لغو میکند
    مثل کد زیر که مانع update,delete در جدول می شود

    create trigger MyTrigger
    on table1
    WITH ENCRYPTION
    instead of update,delete
    as
    begin
    Print 'این جدول غیر قابل تغییر است'
    ROLLBACK
    end
    نکته ای که دراین تریگر فراموش کردم بگم استفاده از WITH ENCRYPTION که سبب میشه کد تریگر غیر قابل دسترس باشه

    یک سوال :آیا روشی وجود داره که بتوان کد را برگرداند؟؟؟

  12. #12
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    بار دیگر برای یاد اوری خودم هم که شده باشه تاکیید میکنم که تریگر instead of به جای دستورات کاربر استفاده میشود مثلا فرض کنید که شما تریگری مینویسید که از حذف رکورد در جدول شما جلوگیری کند و یه پیغامی رو به کاربر نشان دهد خوب حالا اون رو اجرا میکنید و کاربر میاد و یه رکورد رو میخواد حذف کنه که ناگهان با اون پیامی که در تریگر نوشتید مواجه میشه پس نتیجه میگیریم که این نوع تریگر به جای دستوررات کاربر اجرا میشود دوباره مثالی ذکر میکنم :
    create trigger my_trigger 
    on bv
    instead of delete as
    print ('can not delete recods from bv table')

    حال پس از اجرای این دستورات بیایید و این دستورات رو اجرا کنید
    delete from bv 

  13. #13

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    فعال کردن وغیر فعال کردن تریگرهای یک جدول
    فعال کردن

    ALTER TABLE name_table Enable TRIGGER all

    غیر فعال

    ALTER TABLE name_table Disable TRIGGER all

  14. #14
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    اگر این دستورات رو اجرا کنید پیغامی چاپ میشه که شما نمیتوانید این کار رو انجام بدید حالا ما میخواهیم دستور تغییر تریگر ایجاد شده رو هم در این تاپیک شرح بدیم دوستان مثال بالا رو طوری تغیر میدهیم که به راحتی اب خوردن بتوانید رکورد های جدول مورد نظر تان رو حذف کنید پس :
    alter trigger my_trigger 
    on bv
    for delete as
    print ('%d delete records')

  15. #15
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    دوستان برای حذف تریگر از دستور drop trigger استفاده کنید بدین نحو
    drop trigger my _ trigger

  16. #16
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    و اما برای مشاهده تمام تریگر هایی که تا به حال نوشته اید از این رویه ذخیره شده استفاده کنید

    sp_helptrigger 'bv'

    با اجرای این دستور لیست تریگرهای مربوط به جدول BV را مشاهده میکنید
    دوستان بیایید و به جمع ما بپیوندین

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آذر 1387
    محل زندگی
    بابل - بابلسر
    سن
    34
    پست
    103

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    سلام دوستان گرامی
    من 2 تا جدول دارم یکی به نام kar با فیلد های IDP,Na,Fa,Te,Ad و جدول دوم به نام Mos با فیلد های ID,IDP,Na,Fa
    میخوام وقتی کاربر تغییراتی در جدول kar ایجاد میکنه مثلاً مقدار Na رو عوض میکنه به طبع این مقدار Na
    Na در جدول 2 هم اعمال بشه

    نمیدونم ولی فکر کنم باید Trigger بنویسم
    اگه باید تریگر بنویسم ممنون میشم کمکم کنید.
    من از VS 2010 و بانک اطلاعاتی SQL خود VS استفاده میکنم و از طریق DataSet به برنامه ارتباط دارم.
    ممنونم

  18. #18

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    سه حالت برای جدول اتفاق می افتد(insert,update,delete)
    درضمن ما دوتا جدول داریم که رکورهایی که حذف میشوند(deleted)ورکوردهایی که اضافه میشوند(inserted) در آن ها نگه داری میشوند


    createtrigger t1
    on kar
    After update
    as
    begin
    declare @d int
    select @d=Na from deleted
    declare @i int
    select @i=Na from inserted
    if(@i is not null)and(@d is not null)
    begin
    -- update
    end
    end



    آخرین ویرایش به وسیله karimi.ali2005 : جمعه 19 فروردین 1390 در 22:59 عصر

  19. #19
    کاربر دائمی آواتار oliya24
    تاریخ عضویت
    شهریور 1389
    محل زندگی
    ابادان
    سن
    32
    پست
    1,005

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    دوست گرامی کدها رو کپی وپیست نکن که این طور بشن این پست را ویرایش کن و کدها رو بنویس

  20. #20

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    و یک trigger جالب دیگه که ip و user و ... را برمی گرداند

    CREATE DATABASE AuditDB;
    GO
    USE AuditDB;
    GO
    CREATE TABLE dbo.DDLEvents
    (
    EventDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    EventType NVARCHAR(64),
    EventDDL NVARCHAR(MAX),
    EventXML XML,
    DatabaseName NVARCHAR(255),
    SchemaName NVARCHAR(255),
    ObjectName NVARCHAR(255),
    HostName VARCHAR(64),
    IPAddress VARCHAR(32),
    ProgramName NVARCHAR(255),
    LoginName NVARCHAR(255)
    );
    USE YourDatabase;
    GO
    CREATE TRIGGER DDLTriggerName
    ON DATABASE
    FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE
    AS
    BEGIN
    SET NOCOUNT ON;
    DECLARE
    @EventData XML = EVENTDATA();

    DECLARE
    @ip VARCHAR(32) =
    (
    SELECT client_net_address
    FROM sys.dm_exec_connections
    WHERE session_id = @@SPID
    );

    INSERT AuditDB.dbo.DDLEvents
    (
    EventType,
    EventDDL,
    EventXML,
    DatabaseName,
    SchemaName,
    ObjectName,
    HostName,
    IPAddress,
    ProgramName,
    LoginName
    )
    SELECT
    @EventData.value('(/EVENT_INSTANCE/EventType)[1]', 'NVARCHAR(100)'),
    @EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'NVARCHAR(MAX)'),
    @EventData,
    DB_NAME(),
    @EventData.value('(/EVENT_INSTANCE/SchemaName)[1]', 'NVARCHAR(255)'),
    @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]', 'NVARCHAR(255)'),
    HOST_NAME(),
    @ip,
    PROGRAM_NAME(),
    SUSER_SNAME();
    END
    GO


  21. #21
    کاربر تازه وارد آواتار mosafer_deltang
    تاریخ عضویت
    بهمن 1387
    محل زندگی
    اینترنت
    پست
    70

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    با سلام و تشکر

    من تو جدولم یک فیلد به نام Allow_Delete دارم میخوام اگه مقدارش False بود اجازه ی حذف داد نشه وگرنه بتونه حذف کنه
    ممنون میشم کمکم کنید.

  22. #22

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    برای مشاهده کدهای تریگر

    sp_helptext @objname = 'trigger name'

  23. #23

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    یه نکته بگم برا دوستانی که از html سر در نمیارن برخی مثال ها به صورت کد html ذخیره شدن و قابل فهم نیست.
    برای مشههده اونارو توی یه notepad ذخیره کنید و قبل از هر نوشته ای این کد را وارد کنید <html> و در پایان و اخر همه ی کد ها هم <html/> را وارد کنید . اونو با پسوند html ذخیره کنید و بعد با یه مرورگر باز کنید تا مثال را ببینید!

  24. #24

    نقل قول: اموزش:ایجاد تریگرها و مثالهای مختلف

    با سلام و خسته نباشید

    برای من خیلی مفید بود دست شما درد نکنه جناب آقای oliya24

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •