PDA

View Full Version : سوال: IDENTITY@@



siona barnamenevis
شنبه 23 خرداد 1388, 23:03 عصر
سلام می خواستم کاربرداستفاده از IDENTITY@@ را بدونم البته تا یه حدودی می دونم ولی ممنون می شم اگه کسی میدونه بیش تر برام توضیح بده
می خوام بدونم چهID را بر می گردونه ??

fdaliry
یک شنبه 24 خرداد 1388, 02:30 صبح
شماره شناسایی که برای هر فیلد یک مقدار منحصر به فرده و برای اپدیت کردن و پاک کردن ی فیلد از طریق اون دقیق تر میشه ردیف مورد نظر را پیدا کرد و هیچ وقت برای دوردیف تکراری نیست

pesar irooni
یک شنبه 24 خرداد 1388, 02:50 صبح
فرض کن شما دوتا جدول داری که بهم مرتبط هستند مثلا سند و فهرست اقلام که هر سند دارای چند قلم جنس است که باید سند در جدول سند و اقلام مربوط به آن در جدول فهرست اقلام ثبت شود. پس برای ثبت هر قلم نیاز داریم که شماره سند رو به عنوان کلید خارجی در هر رکورد مربوط به فهرست اقلام ثبت کنیم و کلید اصلی هر دو جدول از نوع IDENTITY هستند و بطور خودکار تولید میشوند و ما وقتی یه رکورد ثبت میکنیم از آنها خبری نداریم. وقتی میخواهیم یک سند به همراه اقلام مربوطه رو ثبت کنیم این دو (یعنی ثبت یک رکورد در جدول سند و متعاقبا چندین رکورد در جدول فهرست اقلام) باید در یک تراکنش انجام شوند. حالا وقتی ما سند رو ثبت میکنیم در همون تراکنش باید اقلام هم ثبت شود و ما نیاز به کلید اصلی سندی که الان ثبت کردیم داریم و نمیشه ارتباط قطع بشه و اون رو از دیتابیس بخونیم (که البته برای بازیابی رکورد ثبت شده بازم کلید اصلی رو میخوایم که نداریم ). پس در اینجا از SCOPE_IDENTITY یا IDENT_CURRENT و یا @@IDENTITY استفاده میکنیم که آخرین مقدار IDENTITY که همون کلید اصلی رکوردی که در این تراکنش ذخیره شده است رو بر میگردونه و ما از این مقدار برای ثبت در جدول فهرست اقلام استفاده میکنیم.

abi_sarab
دوشنبه 25 خرداد 1388, 09:20 صبح
می شه با یه مثال عملی توضیح بدید.
اگه نمونه اش رو بذارید خیلی خوبه!
مرسی

siona barnamenevis
دوشنبه 25 خرداد 1388, 23:32 عصر
ba salam

ta anja ke man etela daram goftan ke @@IDENTITY akharin id ke amaliate Insert rosh anjam gerefte barmigardane.vali man jai didam ke dar amaliate Update az in dastor estedafe karde bod (baraye bedast avordane id) vali azonjai ke indastor akharin id ra mide vali dar Update ma har idi ra mitavanim Update konim niazi bein dastor nist pas ya man eshtebah manie in dastoro midonam ya onja eshtebah bode.hala mikham bedonam in dastor akharin id ke amaliate insert rosh anjam gerefte mide yani bishtarin id ya akharin id ra midahad ke kolan rosh amaliat anjam gerefte.

ba tashakor

NewFoxStudent
سه شنبه 26 خرداد 1388, 10:21 صبح
این دستور آخرین ID که به جدول اضافه شده برمیگردونه

ایتم هلپ Sql


@@IDENTITY

Returns the last-inserted identity value.
Syntax

@@IDENTITY
Return Types

numeric
Remarks

After an INSERT, SELECT INTO, or bulk copy statement completes, @@IDENTITY contains the last identity value generated by the statement. If the statement did not affect any tables with identity columns, @@IDENTITY returns NULL. If multiple rows are inserted, generating multiple identity values, @@IDENTITY returns the last identity value generated. If the statement fires one or more triggers that perform inserts that generate identity values, calling @@IDENTITY immediately after the statement returns the last identity value generated by the triggers. The @@IDENTITYvalue does not revert to a previous setting if the INSERT or SELECT INTO statementor bulk copy fails, or if the transaction is rolled back.
@@IDENTITY, SCOPE_IDENTITY, and IDENT_CURRENT are similar functions in that they return the last value inserted into the IDENTITY column of a table.
@@IDENTITY and SCOPE_IDENTITY will return the last identity value generated in any table in the current session. However, SCOPE_IDENTITY returns the value only within the current scope; @@IDENTITY is not limited to a specific scope.
IDENT_CURRENT is not limited by scope and session; it is limited to a specified table. IDENT_CURRENT returns the identity value generated for a specific table in any session and any scope. For more information, see IDENT_CURRENT (http://www.barnamenevis.org/forum/ts_ia-iz_82i1.htm).
Examples

This example inserts a row into a table with an identity column and uses @@IDENTITY to display the identity value used in the new row.
INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'