الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

إسناد Stored Procedure كمرجع لحقل معين

مغلق
بدأه activeman في 21 يونيو 2007 · 1 رد · 716 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

افترض ان لدينا الجدول التالي :

<البيانات 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"

بانتظار الحل يا أهل الخبرة وشكرا جزيلا

تم تعديل هذه المشاركة بواسطة activeman في 21 يونيو 2007 في 01:12

#2

يجب ان تحذف جملة التعديل لانها لا لزوم لها وانما يكفي ان تعيد اخر رقم وبعد ذلك تضع اسم هذا الاقتران في القيمة الافتراضية لهذا الحقل

وهي مثال لمثل هذا الجدول

CREATE TABLE dbo.Table1
	(

	id int NULL,
	name varchar(10)
	)  ON [PRIMARY]
GO
ALTER TABLE dbo.Table1 ADD CONSTRAINT
	DF_Table1_id DEFAULT dbo.GetSerial() FOR id

go
insert into table1 (name) values('test')

كذلك يجب معالجة اذا كان الجدول فارغ في هذا الاقتران حيث سترجع قيمة null

هذا الموضوع مغلق.

مواضيع مشابهة