עבור לתוכן
Magic DevHub
yossiro

הגדרת שדה identity ב sql server 2005

Recommended Posts

הגדרתי שדה כ  identity וכעת יש לי בעיה לדעת במצב הוספה באחרי רשומה מה ערך השדה בבסיס הנתונים (מסתבר שמגיק לא יודע במצב הוספה מה ערך השדה כפי שקבע בסיס הנתונים).

האם קיים פתרון לבעיה ?

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

הי

תנסה להגדיר במאפיינים של הטבלה

identity modified rows כ position

אמור לפתור לך בעיה

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שאלה מצויינת.

להלן התשובה שלי עם הפתרון שאני מצאתי, אם כי אני לא ממש מרוצה ממנו, ואשמח לשמוע על פתרון מוצלח יותר.

א.   ב-MSSQL 2000 (ואני מעריך שגם ב-2005) ישנה פונקציית משתמש פנימית, המחזירה את ערך ה- IDENTITY האחרון שהוקצה בטבלה מסוימת. (IDENT_CURRENT).

ב.   לדוגמא: SELECT IDENT_CURRENT('MY_TABLE')OOO 
   (להתעלם מה-OOO, זה רק למניעת שיבוש עברית-אנגלית)
   יחזיר את ערך ה- IDENTITY האחרון שהוקצה בטבלה זו.
   אם תבצע שאילתא זו לאחר הוספת רשומה בטבלת MY_TABLE תקבל את ה- IDENTITY האחרון בטבלה.
   
ג.   יש לשים לב ל- 2 הנקודות הבאות:
   1.   הפונקציה מחזירה את ה-IDENTITY האחרון מכל ה-SESSIONS ולאו דווקא מה-SESSION שלנו.
   2.   הערך הנכון יוחזר אלינו רק לאחר ביצוע רישום לדיסק, ולכך נדרשת התאמת התכנית כך שהפעלת שאילתת ה- SQL תבוצע בעיתוי הנכון.

ד.   אצלי ביישום הוספתי תכנית שירות קטנה, המקבלת כפרמטר את מספר הטבלה במילון, מבצעת את השאילתה על הטבלה, ומחזירה את ערך ה- IDENTITY האחרון שהוקצה.

אתה מוזמן לנסות, אם כי , כאמור, אני אשמח לשמוע על פתרון מוצלח יותר.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

בס"ד

יש לנו אותה שאלה, ולא הבנו איפה מופיע המאפיין

identity modified rows

האם במג'יק או בבסיס הנתונים

א. האם מישהו יכול להסביר לנו בבקשה איפה יש לשנות את המאפיין

ב. האם שינוי המאפיין באמת עוזר

תודה

 

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

הגדרתי "מיקום" במאפייני הטבלה-> זיהוי שורה מעודכנת.כיצד זה אמור לעזור ? באיזה שלב וכיצד אוכל למצוא את מס' ה-Identity שהתקבל ?<?xml:namespace prefix = O ns = "urn:schemas-microsoft-com:office:office" /><O:p> 

תודה,<O:p>

<O:p> 

אסתר

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

אני ממליץ להוסיף רשומה ע"י פרוצדורה

דוגמא:

ALTER

PROCEDURE dbo.PROC_CREATE_NEW_MEMBER(@P_FIRST_NAME VARCHAR(30),@P_LAST_NAME VARCHAR(30))

AS

SET

NOCOUNT ON

BEGIN

TRY

INSERT general_items (shem_prati,shem_mishpacha) select rtrim(ltrim(@P_FIRST_NAME)),ltrim(rtrim(@P_LAST_NAME))

SELECT @@IDENTITY Return_code

END

TRY

BEGIN

CATCH

SELECT ERROR_MESSAGE()Return_code

END

CATCH

 

<U>שים לב ש Ctrl+Q עובד בסיישין אחר ב DB מאשר המנוע

שי טלמור

05-23530131

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

התחבר או הרשם על מנת להגיב.

עליך להיות משתמש רשום על מנת להגיב

צור חשבון

צור חשבון חדש בקהילה בקלי קלות.

רישום חשבון חדש

התחבר

משתמש קיים? התחבר.

התחבר עכשיו

×