ورود

View Full Version : استفاده از فیلدهای متنی در تریگر



federrer
سه شنبه 03 اردیبهشت 1387, 06:47 صبح
سلام

من تازه تریگر نوشتن رو شروع کردم . یه سوال برام پیش اومده

مثلا ما حالت FOR INSERT رو در نظر بگیریم

در انتقال محتویات فیلدهای int بین دو جدول مشکلی ندارم

ولی اگر فیلدم از نوع nvarchar باشه

با insert کردن تو جدول A فقط کاراکتر اول رشته در فیلد مشابه که تو جدول B داریم ریخته می شود

برای انتقال محتویات فیلدهای متنی باید فیلدهام تو جدولهای مبدا و مقصد از چه نوعی باشن ؟؟

MShirzadi
سه شنبه 03 اردیبهشت 1387, 09:42 صبح
فکر نمی کنم اگر تفاوتی داشته باشه مشکلی پیش بیاد. شما کدی رو که نوشتی توی Trigger که بخواد این کار رو بکنه رو اینجا بزار تا یه نگاه کنیم.

federrer
جمعه 06 اردیبهشت 1387, 19:39 عصر
توضیح بیشتر :

جدول T1 شامل فیلدهای name1 از نوع nvarchar و mab1 از نوع int است
جدول T2 شامل فیلدهای name2 از نوع nvarchar و mab2 از نوع int است

حالا تریگر bb را روی جدول T1 اعمال می کنیم :


CREATE TRIGGER bb ON T1
FOR INSERT

AS
declare @x nvarchar,@y int
select @x = name1,@y = mab1 from inserted
INSERT INTO T2(name2,mab2) VALUES (@x,@y)



باید با اضافه کردن یک رکورد جدید در T1 بطور خودکار یک رکورد با مقادیر مشابه در T2 اضافه شود ولی تنها کاراکتر اول از مقدار name1 به name2 منتقل میشود ! چرا ؟؟؟؟؟

twelve
جمعه 06 اردیبهشت 1387, 20:27 عصر
ولی اگر فیلدم از نوع nvarchar باشه
با insert کردن تو جدول A فقط کاراکتر اول رشته در فیلد مشابه که تو جدول B داریم ریخته می شود




باید با اضافه کردن یک رکورد جدید در T1 بطور خودکار یک رکورد با مقادیر مشابه در T2 اضافه شود ولی تنها کاراکتر اول از مقدار name1 به name2 منتقل میشود ! چرا ؟؟؟؟؟


طول(Length) رشته Nvarchar رو باید در لحظه تعریف متغیر تعیین کنی



Declare @Parameter Nvarchar(50)