PDA

View Full Version : کلید خارجی



webdeveloper
سه شنبه 16 تیر 1383, 20:09 عصر
سلام
یه مشکل داشتم با ذخیره کلید خارجی. ببینین یک جدول دارم به اسم x که کلید اصلی آن ID است و یک جدول هم دارم به اسم y که یک فیلد داره به اسم xID که IDجدول x را در خودش ذخیره میکنه. مشکل من اینه که این آیدی Auto Increament هست حالا نمیدونم بعد از ذخیره رکورد در ایکس چه جوری آیدی اون رو پیدا کنم تا در y ذخیره کنم.
:roll:

oxygenws
چهارشنبه 17 تیر 1383, 02:10 صبح
می تونم بپرسم با زبون خاصی کار می کنید یا دستورش توی MySQL رو می خواید؟!

webdeveloper
چهارشنبه 17 تیر 1383, 07:51 صبح
من از php استفاده میکنم ولی خب اگر بشه این کار را فقط با MySQL کرد که خیلی بهتره. 8)

oxygenws
چهارشنبه 17 تیر 1383, 10:41 صبح
شما می تونید ID آخرین کلید اضافه شده رو از طریق تابع mysql_insert_id بدست بیارید -> http://www.php.net/manual/en/function.mysql-insert-id.php

عملی که این تابع انجام می ده دقیقا مشابه عمل تابع LAST_INSERT_ID() در MySQL هستش. برای مشاهدهء مثال ها و کلا روش کار اینجا رو ببین:
http://www.mysql.com/doc/en/Getting_unique_ID.html

مثال:

If you want to use the ID that was generated for one table and insert it into a second table, you can use SQL statements like this:

INSERT INTO foo (auto,text)
VALUES(NULL,'text'); # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
VALUES(LAST_INSERT_ID(),'text'); # use ID in second table

این توضیح رو هم بگم که، قاعدتا تابع mysql_insert_id دستور سیکویلی مشابه دستور زیر رو اجرا خواهد کرد (این رو به این دلیل می گم که بتونید سرعت ها رو با هم مقایسه کنید :) ):
select last_insert_id() where 1=1

موفق باشید، امید

webdeveloper
چهارشنبه 17 تیر 1383, 19:38 عصر
:D

oxygenws
چهارشنبه 17 تیر 1383, 23:03 عصر
:D
چی شد؟؟!! :)

mortezabj
سه شنبه 17 آبان 1384, 12:01 عصر
** ویرایش شد **
لطفا قوانین سایت رو مطالعه کنید.
سوال شما هیچ ربطی به عنوان این سوال نداشت.