PDA

View Full Version : سوال: در مورد Foreign key در Mysql



persian_farvahar
دوشنبه 27 آبان 1387, 15:37 عصر
ُسلام دوستان تا اونجا كه من متوجه شدم Foreign key به كليدي گفته ميشه كه تو تيبل پدر كليد اصلي و در تيبل فرزند كليد خارجي. حالا مشكل من اينجاست كه چرا وقتي تو Mysql از كد زير :
CREATE TABLE parent ( par_id INT NOT NULL, PRIMARY KEY (par_id) ) ENGINE = INNODB; CREATE TABLE child ( par_id INT NOT NULL, child_id INT NOT NULL, PRIMARY KEY (par_id, child_id), FOREIGN KEY (par_id) REFERENCES parent (par_id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = INNODB; استفاده ميكنم ، چرا وقتي فيلد parent_id را پر ميكنم خودش اتومات پر نميشه(مگه اينجوري نيست كه وقتي اونجا يه چيزي درج بشه اينجا هم بايد update بشه) و من بايد خودم بيام دستي از طريق combo box در mysql مقدار بهش بدم . ولي اينم بگم محتويات تو combobox درج ميشه ولي تو خود فيلد بايد بيام انتخاب كنم كدوم مقدار درج بشه. اگه اشتباه برداشت كردم و يا روشم اشتباهه ممنون ميشم بهم بگيد و بگيد كه چه جوري ازش استفاده كنم كه خود به خود داخلش مفدار updateو delet و ... بشه.

zoghal
سه شنبه 28 آبان 1387, 00:12 صبح
اگر از موتور Myisam استفاده بهره میگیرید نمی توانید از کلید های Foreign و ترانزکشن استفاده کنید
برای استفاده از موارد باید از موتور innodb بهره بگیرید

persian_farvahar
سه شنبه 28 آبان 1387, 09:59 صبح
اگر از موتور Myisam استفاده بهره میگیرید نمی توانید از کلید های Foreign و ترانزکشن استفاده کنید برای استفاده از موارد باید از موتور innodb بهره بگیرید ممنون من فكر ميكنم mysql من از اين نوع موتور پشتيباني ميكنه ، همونطور كه در كد ميبينيد اين موتور را شبيه سازي كردم و در ستون Type تيبل InnoِDB نمايش داده ميشه. ولي مشكل من اينجاست كه چرا وقتي تو جدول پدر تو كليد اصلي مقدار وارد ميكنم ، تو كليد خارجي نمايش داده نميشه و بايد بيام دستي اين مقدار را از combobox جلوي فيلد بهش بدم.

persian_farvahar
شنبه 02 آذر 1387, 20:29 عصر
کی نیست یه توضیح بده