Skip to main content

الجزء السابع: أسترجاع اخر قيمة للعمود المتماثل Getting last generated identity column valuea

الجزء السابع: أسترجاع اخر قيمة للعمود المتماثل
Getting last generated identity column value
 

هذا الجزء مكمل للجزء السادس, تعلمنا في الجزء السادس ان العمود المتماثل Identity Column تنتج قيمته بصورة تلقائية, ولكن ماذا لو أردنا استرجاع اخر قيمة للعمود المتماثل, في هذا الجزء سوف تتعلم ثلاث طرق لأسترجاع أخر قيمة تم انشاءها في العمود المتماثل Identity Column :
عن طريق ثلاث جمل استعلام التالية:
SELECT SCOPE_IDENTITY()
SELECT @@IDENTITY
SELECT IDENT_CURRENT('TABLE_NAME')



السؤال التالي: لماذا يوجد ثلاث جمل لعمل نفس الغرض؟؟؟!
الجواب: عندما تقوم بأنشاء اتصال بقاعدة البيانات فأنك بهذه الحالة تفتح حلقة اتصال تسمى بالSession واذا قام شخص اخر بالأتصال بنفس القاعدة سينشأ حلقة اتصال ثانية Session خاصة به, اي اصبح حلقتين اتصال, والمجال او النطاق Scope خاص بكل حلقة اتصال, هام جداً ان تكون قد عرفت الفرق بين الSession  والScope لأنها على غرارها ستعرف اين تستخدم احد الجمل في المكان المناسب,
للتوضيح أفضل سأقوم بأنشاء جدولين tblTest1 & tblTest2 وكلاهما يحتويان على عامودين العمود الأول المعرف ID والذي سيكون هو العمود المتماثل والعمود الثاني سيكون قيمة عشوائية فقط لغرض توضيح الفكرة:
CREATE TABLE tblTest1
(
ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
Value NVARCHAR(30) NOT NULL
)

CREATE TABLE tblTest2
(
ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
Value NVARCHAR(30) NOT NULL
)


والأن لنعرف بالصورة ماذا يقصد بالSession والScope ؟



1.  عمل ال SELECT SCOPE_IDENTITY()
تستخدم هذه الدالة لأسترجاع اخر قيمة للعمود المتماثل identity column  ضمن نفس حلقة الأتصال Session  وضمن نفس النطاق Scope  :

مثال على ذلك سأقوم بأنشاء سجل جديد في جدول tblTest1  وسأسترجع اخر قيمة للعمود المتماثل عن طريق تلك الدالة:



2.  عمل ال SELECT @@IDENTITY
يستخدم هذا المتغير لأسترجاع اخر قيمة للعمود المتماثل identity column  ضمن نفس حلقة الأتصال Session  ولكن ضمن نطاق Scopeاخر:

مثال على ذلك سأقوم بأنشاء سجل جديد في جدول tblTest1  وسأنشأ زناد Trigger يقوم بالعمل عندما ينشأ سجل جديد في جدول tblTest1  وفي هذا الزناد سأنشأ سجل اخر في جدول tblTest2 والأحظ الفرق بين اول جملة استعلام مع هذه الجملة:

CREATE TRIGGER TR_forInsert on tblTest1
for insert
as
Begin
 INSERT INTO tblTest2 VALUES('M')
end


توضحت الفكرة من الصورة اعلاه ان الSCOPE_IDENTITY  تسترجع اخر قيمة للعمود المتماثل لنفس الSession  ونفس المجال Scope  بينما المتغيير @@IDENTITY يسترجع اخر قيمة للعمود المتماثل لنفس الSession  ولكن لScope  اخر , لاحظ ان الScope  تغير عندما انشأنا زناد Trigger لأنه يعمل بمجال اخر بنفس الSession


3.  عمل ال SELECT IDENT_CURRENT('TABLE_NAME')
هذه الدالة تسترجع لك اخر قيمة للعمود المتماثل للجدول المذكور في اي Session  وفي اي Scope لاحظ المثال التالي:



في الSession 2 انشأت سجل جديل في جدول tblTest1 وهذا ضغط على زناد Trigger لأنشاء سجل في جدول tblTest2 لاحظ في الSession 1 في المخرجات الSCOPE_IDENTITY()  استرجعت اخر قيمة ضمن نفس الSession  اي الSession 1  =10 وفي  المتغيير @@IDENTITY = 6 اخر قيمة للIdentity column  ضمن نفس الSession  ولكن بنطاق اخر Scope , اخر شيء IDENTIT_CURRENT() استرجعت اخر قيمة للجدول المذكور في اي Session  وفي اي Scope =11

هنا السؤال الأهم اذا كان لديك موقع اي من هذه الجمل سوف تستخدم لأسترجاع اخر قيمة عندما يقوم شخص بالتسجيل في موقعك؟؟!

اريد الجواب منكم في تعليق J

Comments

Post a Comment

Popular posts from this blog

PART #2: Registration and Login System Tutorial Using PHP and MYSQL

PART #2: Registration and Login System Tutorial Using PHP and MYSQL Registration and login system using PHP and MySQL database, in this part you will do the following: 1- Creating the registration page. 2- Validating the registration form. 3- Sending the activation link on successful registration. note: you can find the mailserver tool here: [MailServerTool] Good luck. PHP,Mysql,Programming,web development,How to,Technology,web programming,web project ideas,safaa al-hayali,saf3al2a,Registration and login,Registration and login in php,php and mysql login system,registration system using php and mysql,login and register php,login and register php with database,database,php tutorial,learn php,tutorial

How To Play .srt Subtitles File in Windows Media Player

How To Play .srt Subtitles File in Windows Media Player links: https://sourceforge.net/projects/wmpsub/ wmp,.srt Subtitles File in Windows Media Player,How To Play .srt Subtitles File in Windows Media Player,How To,Safaa Al-Hayali,saf3al2a,srt subtitle in WMP,Windows,Windows Media Player,media,.ass,local subtitles

Virtual Box : How to Increase Disk Size - Windows

How to increase disk size or disk storage in oracle virtual box the command you have to use: vboxmanage.exe modifymedium "[YourPathToVdiFileOfYourVirtualMachine]" --resize [NUMBER] virtual,box,vbox,oracle,partition,size,disk,increase,resize,windows,10,microsoft,vdi,vboxmanage,configuration,Safaa AL-Hayali,saf3al2a,Oracle,VirtualBox,How to,windows 10