افترض ان لدينا الجدول التالي :
<البيانات DataTable>
والحقــول :
1- رقم مسلسل ID
2- ملاحظات Note
وجدول أخر
< الترقيم Serialtable>
والحقل
Serial
--------------------
المطلوب جعل الحقل الأول من الجدول الاول DataTable أي الحقل ID يقرأ قيمة الSerial+1
ومن ثم يسندها لل ID
مع تعدل قيمة الحقل الموجود بال Serialtable -> Serial=Serial+1
---
بحيث يكون محتوى الحقل ID ناتج دالة أو SP لكن يوضع بداخل ال default value or Binding
-----------------------------------------------------------------
لقد قمت بتصميم دالة FN_GetSerial
ووضعت بها كود قراءة السجل Serial+1
ولكن ،،، عندما أضفت الأمر Update Serialtable Set Serial=Serial+1
كما يلي
ALTER FUNCTION [dbo].[GetSerial] ( ) RETURNS int AS BEGIN declare @ser int select @ser=serial+1 from serialTable update serialTable set serial=serial+1 return @ser END
-- فظهرت لي الرسالة التالية :
Invalid use of side-effecting or time-dependent operator in 'UPDATE' within a function.
والتي تعني انه لا ينفع استخدام Update بداخل ال Function
..
أرجو المساعدة حيث أنني عمدت لهذه الطريقة من أجل اعتماد طريقة وضع سيريال شبيه بالاوتونمر Autonumber ولكن بطريقة مخصصة ومعينة ..
حيث يجب وضعها أثناء تصمي مالجدول في ال "Default Value or Binding"
بانتظار الحل يا أهل الخبرة وشكرا جزيلا
