PDA

View Full Version : تریگر برای ویرایش همزمان دو جدول



salmah
دوشنبه 24 آذر 1393, 18:20 عصر
با سلام
من دوتا جدول دارم که چند فیلد مشترک دارند حالا میخوام وقتی اطلاعات کد دوره در جدول tcod ویرایش شد برای کسانی که این کد دوره رادر جدول tsabtedoreh ثبت کرده اند هم اطلاعات کد دوره ویرایش شود.
126615
تریگر زیر رانوشتم


create trigger edit_tcod_tsabtedoreh
on tcod
for update
as
declare @mid int
declare @oid int
declare @bid int
declare @shomaremojavez nvarchar(50)
declare @dtamojavez nvarchar(50)
declare @datastart nvarchar(50)
declare @dataend nvarchar(50)
declare @cod int


set @mid=(select mid from inserted)
set @bid=(select bid from inserted)
set @oid=(select oid from inserted)
set @shomaremojavez=(select shomaremojavez from inserted)
set @dtamojavez=(select dtamojavez from inserted)
set @datastart=(select datastart from inserted)
set @dataend=(select dataend from inserted)
update tsabtedoreh
set oid=@oid,mid=@mid,bid=@bid,shomaremojavez=@shomare mojavez,dtamojavez=@dtamojavez,datastart=@datastar t,dataend=@dataend

where cod=@cod

ولی ارور زیر را داره.اشکال کار کجاست
126617

espootin
دوشنبه 24 آذر 1393, 18:26 عصر
سلام
از اونجایی که دستور select شما چند رکورد را برمی گردونه ، نمی تونید به این شکل آن را در متغیر ذخیره نمایید.

اگر می خواهید فقط یک مقدار انتخاب شود از Top(1) استفاده نمایید.

salmah
دوشنبه 24 آذر 1393, 18:47 عصر
سلام
از اونجایی که دستور select شما چند رکورد را برمی گردونه ، نمی تونید به این شکل آن را در متغیر ذخیره نمایید.

اگر می خواهید فقط یک مقدار انتخاب شود از Top(1) استفاده نمایید.

set @mid=(select Top(1) mid from inserted)

به این صورت نوشتم ولی برای جدول tsabtedoreh اعمال نشد

espootin
دوشنبه 24 آذر 1393, 19:00 عصر
خوب قطعا یه جای کار مشکل داره، ولی خوب میشه این کار رو با تریگر انجام داد.

من نمیدونم چرا اصرار دارید حتما از طریق تریگر انجام بدید ، می توانید از طریق پروسیجر درج اون جدول و پس از درج این رو هم ویرایش کنید.