کار با کلیدهای اصلی و جانبی

aliamel

کاربر فعال
سلام . وقت به خیر !
دوستان سوال:
فرض کنید سه جدول با مشخصات زیر ایجاد کرده ایم :

PHP:
CREATE TABLE s(sno primary key,sname char(35),city char(20))
PHP:
 CREATE TABLE p(pno int primary key,pname char(35),weight int)

PHP:
create table sp(pno int,sno int ,qty int ,constraint ppp foreign key(pno) references p(pno) on Delete cascade,constraint sss foreign key(sno) references s(sno) on Delete cascade,constraint prm primary key(sno,pno))
سوال :
چطورری می تونم با حذف یک رکورد از جدول مثلا p باعث بشم که رکوردهای متناظر اون هم از جدول sp حذف بشن ؟
فقط می خوام توسط کدنویسی این کار رو انجام بدم . احتمالا اگه کدهای فوق کم و کاستی دارن لطفا صحیحشان رو بنویسید .
تشکر
 

mtchabok

Member
عزیزم یه چنین قابلیت در mysql وجود نداره که به صورت اتوماتیک این کار رو انجام بده .
 

aliamel

کاربر فعال
عزیزم یه چنین قابلیت در mysql وجود نداره که به صورت اتوماتیک این کار رو انجام بده .
شما فرض بفرمایید که تنها می خواین کدهای sql ی بنویسین که این کار رو انجام بده .محیط نوشتن این کد ها چندان اهمیتی نداره !
 

aliamel

کاربر فعال

ممنون دوست گرامی . اما من می خوام وقتی رکوردی رو از جدولی حذف کردم به طور اتومات رکوردهای متناظرش از جدول دیگه هم حذف شه . آیا برای انجام چنین کاری باید از relation ها استفاده کرد ؟ آیا میشه relation ها رو توسط کد نویسی در جداول ایجاد نمود ؟
 

mtchabok

Member
تا اونجایی که من میدونم relation ها رو در برنامه نویسی وب نداریم حتی در asp.net هم باز relation رو توسط دستورات sql تعریف میکنیم که امکان حذف نداره از جداول به صورت اتوماتیک نداره و کلا relation ها برای select استفاده میشه .
البته شاید در mssql بشه اینکار رو کرد . (اطلاعات دقیقی ندارم )
 

amirepsilon

Active Member
دوست گرامی تا اونجایی که من میدونم، اگر بین جداولتون relation باشه، این چیزی که شما میخواهید عملی میشه.
 

i-php-i

Active Member
اگر فقط منظورتون حذف رکورد هست، با یه کوئری مقداری که توی همه جدولها مشترک هست رو بدست بیارید و بعد با استفاده از کوئری های تکی فیلدهای متناظر رو حذف کنید.
 

aliamel

کاربر فعال
دوست گرامی تا اونجایی که من میدونم، اگر بین جداولتون relation باشه، این چیزی که شما میخواهید عملی میشه.

آیا میشه همین Relation بین جداول رو به جای این که به صورت ویژوال انجام بدیم به وسیله دستورات SQL ایجاد کرد؟
 

mtchabok

Member
عزیزم در دستورات sql ارتباط بین جداول رو به این صورت هس :
کد:
select * from `table1` inner join `table2` having `table1`.`column1`=`table2`.`column1`
همونطوریکه میبینی برای select استفاده میشه و برای حذف کردن به این صورت نمیشه .
 

جدیدترین ارسال ها

بالا