View Full Version : راهنمایی در مورد مثالی از TRigger
raha_ebr
چهارشنبه 27 خرداد 1394, 11:16 صبح
با سلام وخسته نباشید
میخواستم یک تریگر روی جدول فعال کنم
دوتا جدول دارم به نام Course ,Student
اگررکوردی در جدولcourse درج شدکه شماره دانشجویی آن در جدول Student نبود یه پیغام بده یا از طریق تریگر بهم اطلاع بده
شماره دانشجویی در جدول student کلید اصلی ودر جدولcourse کلید خارجی
حالا نمیدونم دستور تریگرشم تا اینجا درست نوشتم یا نه ؟؟؟ create procedure TR_insertcourse
on courese
after insert
as
اینجا چی بنویسم؟؟ ???
چطوری بگم اگه همچین شماره دانشجویی"11111111" تو جدول studentنبود پیام بده،یا تریگرفعال بشه
ممنون کسی بتونه راهنماییم بکنه --- new Query ---
insert into course
('values('ali','abbasi',17,'1111111
SabaSabouhi
چهارشنبه 27 خرداد 1394, 12:09 عصر
با سلام وخسته نباشید
میخواستم یک تریگر روی جدول فعال کنم
دوتا جدول دارم به نام Course ,Student
اگررکوردی در جدولcourse درج شدکه شماره دانشجویی آن در جدول Student نبود یه پیغام بده یا از طریق تریگر بهم اطلاع بده
شماره دانشجویی در جدول student کلید اصلی ودر جدولcourse کلید خارجی
حالا نمیدونم دستور تریگرشم تا اینجا درست نوشتم یا نه ؟؟؟ create procedure TR_insertcourse
on courese
after insert
as
اینجا چی بنویسم؟؟ ???
چطوری بگم اگه همچین شماره دانشجویی"11111111" تو جدول studentنبود پیام بده،یا تریگرفعال بشه
ممنون کسی بتونه راهنماییم بکنه --- new Query ---
insert into course
('values('ali','abbasi',17,'1111111
سلام
من نمیدونم منظورت از جدول course چی هست و چی توش نگهداری میکنی. اما این چیزی که شما نیاز داری به نظر میرسه
که با کلید خارجی راحتتر بهش برسی.
اما اگه فقط منظور آزمایش توانمندیهای Trigger هست. باز از فرمان Rollback استفاده کنی که عملیات ( transaction ) رو کنسل
میکنه و هیچ چیزی تو دیتابیس ثبت نمیشه. و برای ایجاد یک exception که بتونی تو برنامه اون رو دریافت کنی باید از RAISERROR ( با یه دونه e )
استفاده کنی.
صبا صبوحی
pezhvakco
چهارشنبه 27 خرداد 1394, 12:49 عصر
حالا نمیدونم دستور تریگرشم تا اینجا درست نوشتم یا نه ؟؟؟ create procedure TR_insertcourse
اگه می خوایین تریگر بنویسید چرا نوشتید Create Procedure
چطوری بگم اگه همچین شماره دانشجویی"11111111" تو جدول studentنبود پیام بده،یا تریگرفعال بشه
چرا پیش از اینکه به ذخیره برسه کنترل نمی کنید یا اجازه ورود داده غیرمجاز می دهید.
اگر می خواهید پایگاه داده کنترل انجام دهد، روش های آقای صبوحی بهتر و درست تر از خواسته شما است.
raha_ebr
چهارشنبه 27 خرداد 1394, 13:11 عصر
شرمنده جدول course را اشتباهی اطلاعاتودرج کردم یه جدول ازمایشی که نام درس،نمره وشماره دانشجوداخلش ذخیره می شود
فقط می خواستم دستورات تریگرو تست کنم اما دستوراتشو نمیدونم چطوری بنویسم،فقط می خوام نتیجه تریگروتوSQLببینم
مثلا اگریه درج انجام شدیا حذف یا آپدیت یه پیغام بهم نشون بده یا اون سطری که حذف یا اضافه یا آپدیت میشه تو یه جدول موقتی یا مجازی نشون بده
کدش چطوری هست ؟
Create Trigger tr_InUp
ON student
FOR INSERT or Delete or Update
AS
ازاینجا به بعدش نمیدونم چی بنویسم
pezhvakco
چهارشنبه 27 خرداد 1394, 13:23 عصر
فقط می خوام نتیجه تریگروتوSQLببینم
کدش چطوری هست ؟
در همین سایت هم بسیار است نوشته و فایل برای راهنمایی و آشنایی شما با تریگر .
ازاینجا به بعدش نمیدونم چی بنویسم
کدنویسی های معمولی
Delete
UpDate
Insert
If
هر چی می خوایید
raha_ebr
چهارشنبه 27 خرداد 1394, 13:33 عصر
کدنویسی معمولی که نشدجواب:(
مثلایه جا سرچ کردم میگفت توجدول موقتی From deleted وواسه درج و آپدیت تو جدول Selected، نتیجه ذخیره میشه اما نمیدونم دستور درستشو چطوری بنویسم؟
فقط می خوام نتیجه نشون داده بشه؟
آیاهمچین چیزی ممکن هست یا نه؟
اگه اره،چطوری؟
کدش دقیقا چطوریاست؟؟
SabaSabouhi
چهارشنبه 27 خرداد 1394, 13:33 عصر
شرمنده جدول course را اشتباهی اطلاعاتودرج کردم یه جدول ازمایشی که نام درس،نمره وشماره دانشجوداخلش ذخیره می شود
فقط می خواستم دستورات تریگرو تست کنم اما دستوراتشو نمیدونم چطوری بنویسم،فقط می خوام نتیجه تریگروتوSQLببینم
مثلا اگریه درج انجام شدیا حذف یا آپدیت یه پیغام بهم نشون بده یا اون سطری که حذف یا اضافه یا آپدیت میشه تو یه جدول موقتی یا مجازی نشون بده
کدش چطوری هست ؟
Create Trigger tr_InUp
ON student
FOR INSERT or Delete or Update
AS
ازاینجا به بعدش نمیدونم چی بنویسم
سلام
خوب حالا که شفاف گفتی چی میخوای، بهتر میتونم جواب بدم.
شما در trigger میتونی شبیه به SP کد بنویسی، فقط باید یه چیزهایی رو بدونی و رعایت کنی.
1. شما در Trigger همیشه داخل یک Transaction هستی، یعنی برای کنسل کردن عملیات میتونی از Rollback استفاده کنی
2. توی Trigger سعی کن به هیچ عنوان از متغیر استفاده نکنی ( DECLARE @value as int )
3. توی Trigger میتونی از دو جدول مجازی inserted و deleted استفاده کنی.
جدول inserted در دو حالت INSERT, UPDATE پر میشه و شامل مقادیر جدید جدول هست.
جدول deleted در دو حالت UPDATE, DELETE پر میشه و شامل مقادیر از بین رفته میباشد.
( نکته این که update ترکیب یک delete و یک insert در نظر گرفته میشه )
شما میتونی با join کردن این جدولها با جدولهای دیگه برای سطرهای اضافهشده، تغییر یافته یا حذف شده کارهای خاصی رو انجام بدی.
صبا صبوحی
raha_ebr
چهارشنبه 27 خرداد 1394, 13:55 عصر
جناب صبوحی مشکل من اینجاست که نمیدونم کجا به کار ببرم یعنی کجای تریگرونحوه نوشتنشو بلد نیستم مثلا به صورت زیر نوشتم اما خطا میده
اصلا نحوه نوشتنشو نمیدونم
Create Trigger tr_Insertst
ON student
FOR INSERT
AS
insert into from inserted
(values('105','ali','habibi',20
raha_ebr
چهارشنبه 27 خرداد 1394, 15:08 عصر
جوینده یابنده است، بلاخره اون چیزی که می خواستم به دست آوردم:لبخندساده:،فقط دستورات درج رو تو یه کوئری جدا می نویسیم
از تمام عزیزانی که با حوصله جواب این بنده حقیرو دادن متشکر
create Trigger tr_InUp
ON student
FOR INSERT
واسه همین سه خط در تلاش بودم :) AS
select inserted.ID,inserted.Name,inserted.LastName
from inserted,student
where student.ID=inserted.ID
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.