PDA

View Full Version : تريگر در sql server 2008



narmafzar
شنبه 14 خرداد 1390, 15:05 عصر
يه سئوال
شيوه دسترسي به تعريف تريگر در sql server 2008 بصورت محاوره اي با sql server 2000 تغيير كرده (بغيير از روش دستوري create trigger ) .
در sql server 2000 زمان تعريف ساختار جدول از منوي بالاي امكان تعريف و تغيير يك تريگر وجود داشت.
دوستان ميتونند كمك كنند ؟
ممنون

حمیدرضاصادقیان
شنبه 14 خرداد 1390, 15:10 عصر
سلام.
اگر خود جدول رو در management Studio باز کنید زیر مجموعه اون گزینه ای به نام Trigger داره که میتوانید با راست کلیک رو اون ،تریگر مورد نظر رو ایجاد کنید.

uthman
جمعه 27 اردیبهشت 1392, 19:27 عصر
سلام خدمت همه استادان.
یه سوالی داشتم اگه دوستان لطف کنند کمکم کنند ممنون میشم.
سوال:فرض کنید دیتا بیس من دوتا جدول داره یکی USER و دیگری TEL
جدول USER شامل:
ID:که IDENTITY می باشد
NAME: نام یوزر
FAMILY
جدول TEL شامل :
1:ID
2:PHONE NUMBER
در ورودی 3 تکست داریم که نام و نام خانوادگی و شماره تلفن رو میگیره.
الان سوالم اینجاست که می خواهم هر وقت کاربر دکمه INSERT رو زد اول نام و نام خانوادگی در جدول USER درج بشه و بعد با استفاده از تریگر تلفن رو با ID درج شده در جدول USER در جدول TTEL درج کنم .ممنون میشم دوستان بهم کمک کنند.

hramezani
جمعه 27 اردیبهشت 1392, 19:55 عصر
سلام
توی تریگر insert جدول user یه دستور insert بنویس
id رو هم میتونی هم تز "inserted" بخونی هم از scope_identity() استفاده کنی
این مقاله هم میتونه کمکت کنه
http://www.codeproject.com/Articles/103610/Difference-between-IDENTITY-SCOPE_IDENTITY-IDENT_C

uthman
جمعه 27 اردیبهشت 1392, 21:21 عصر
بد نیست به این وبلاگ هم مراجعه کنید مطالبی در مورد تریگر ا هست که بیشتر برای افراد مبتدی به کار می آد.
www.rayanravesh.blogfa.com

uthman
جمعه 27 اردیبهشت 1392, 21:24 عصر
ممنون آقای هرامزانی.
مشکل من اینه که مقدار تلفن رو چه جوری به دست بیارم.تو جدول userکه فیلدی به نام تلفن ندارم.مقدار تکس باکس تلفن رو چه جوری پاس کنم به تریگر؟

hramezani
جمعه 27 اردیبهشت 1392, 21:35 عصر
حالا حتما میخواین از تریگر استفاده کنین؟
با یه sp و استفاده از دو تا دستور insert پشت سر هم توی sp مشکل حل میشه که

uthman
جمعه 27 اردیبهشت 1392, 22:30 عصر
فقط می خوام این کار انجام بشه اگه بتونین راهنماییم کنید ممنون می شم

uthman
جمعه 27 اردیبهشت 1392, 22:43 عصر
این کد رو نوشتم ولی خطا داره:
ALTER PROCEDURE INSER
@NAME NVARCHAR(50),@FAMILY NVARCHAR(50),@tel numeric(18,0)
AS
BEGIN
INSERT INTO [user](name,lastname)VALUES(@NAME,@FAMILY)
insert into tel(id,tel)values((select id from inserted),@tel)
END

hramezani
جمعه 27 اردیبهشت 1392, 23:28 عصر
این کد رو نوشتم ولی خطا داره:
ALTER PROCEDURE INSER
@NAME NVARCHAR(50),@FAMILY NVARCHAR(50),@tel numeric(18,0)
AS
BEGIN
INSERT INTO [user](name,lastname)VALUES(@NAME,@FAMILY)
insert into tel(id,tel)values((select id from inserted),@tel)
END

باید اینطور بنویسی
ALTER PROCEDURE INSER
@NAME NVARCHAR(50),@FAMILY NVARCHAR(50),@tel numeric(18,0)
AS
BEGIN
INSERT INTO [user](name,lastname)
VALUES(@NAME,@FAMILY)

insert into tel(id,tel)
values ((select scope_identity() ),@tel)
END