foreign key(attr def {,attr def })
references table name ((attr def {,attr def })
[on cascade delete]
The foreign key construction contains the option on cascade delete. The
role of this option is to define the behavior of the tables when deletions occur
in the table where the primary key occurs. Namely, when a row is removed
from the table containing the primary key and the clause on cascade delete is
specified, then all rows from the table that contains the corresponding foreign
key that match the removed row are also removed.
Example 5.3.1 Suppose that the tabular variable CITIES is created by:
create table CITIES (city varchar(40),
state char(2),
primary key (city,state));
A second tabular variable, STORES, records the stores that a retailer has in
the covered territory, and is created by
create table STORES (storeno integer not null,
address varchar(40) not null,
city varchar(40),
state char(2),
tel char(12),
primary key storeno,
foreign key(city,state) references CITIES(city,state)
on delete cascade);
To populate the tables we execute the following directives:
insert into CITIES(city, state) values(’Boston’,’MA’);
insert into CITIES(city, state) values(’Spingfield’,’MA’);
insert into CITIES(city, state) values(’Providence’,’RI’);
insert into CITIES(city, state) values(’Hartford’,’CT’);
insert into CITIES(city, state) values(’Bayonne’,’NJ’);
insert into STORES(storeno, addr, city, state, tel)
values(1,’125 Harvard St.’,’Boston’,’MA’,’617-287-0991’);
insert into STORES(storeno, addr, city, state, tel)
values(2,’50 Storrow Drive’,’Boston’,’MA’,’617-566-7629’);
insert into STORES(storeno, addr, city, state, tel)
values(3,’85 Manton Av.’,’Providence’,’RI’,’401-453-1234’);
insert into STORES(storeno, addr, city, state, tel)
values(4,’40 West Street’,’Hartford’,’CT’,’860-232-4484’);
insert into STORES(storeno, addr, city, state, tel)
values(5,’5 Finley Av.’,’Bayonne’,’NJ’,’908-221-0094’);
insert into STORES(storeno, addr, city, state, tel)
ที่สำคัญต่างประเทศ (attr def {, attr def})
ชื่อตารางการอ้างอิง ((attr def {, def attr})
[บนน้ำตกลบ]
ก่อสร้างต่างประเทศที่สำคัญมีตัวเลือกในน้ำตกลบ.
บทบาทของตัวเลือกนี้คือการกำหนดพฤติกรรม ของตารางเมื่อลบเกิดขึ้น
ในตารางที่คีย์หลักที่เกิดขึ้น. กล่าวคือเมื่อแถวจะถูกลบออก
จากตารางที่มีคีย์หลักและข้อในน้ำตกลบที่มีการ
ระบุไว้แล้วแถวทั้งหมดจากตารางที่มีสอดคล้องกับต่างประเทศ
ที่สำคัญ ที่ตรงกับแถวเอาออกจะถูกลบออกยัง.
5.3.1 ตัวอย่างสมมติว่าเมืองตัวแปรตารางจะถูกสร้างขึ้นโดย:
สร้างเมืองของตาราง (เมือง varchar (40),
ถ่านรัฐ (2),
คีย์หลัก (เมือง, รัฐ));
สอง ตัวแปรตาราง, ร้านค้า, ร้านค้าบันทึกที่ร้านค้าปลีกที่มีอยู่ใน
ดินแดนที่ปกคลุมไปด้วยและถูกสร้างขึ้นโดย
การสร้างร้านค้าตาราง (จำนวนเต็ม storeno ไม่โมฆะ
อยู่ varchar (40) ไม่เป็นโมฆะ,
เมือง varchar (40),
ถ่านรัฐ (2)
ถ่านโทร (12),
storeno คีย์หลัก
ต่างประเทศที่สำคัญ (เมือง, รัฐ) อ้างอิง Cities (เมือง, รัฐ)
ในน้ำตกลบ)
เมื่อต้องการเติมตารางที่เราดำเนินการคำสั่งต่อไปนี้:
แทรกลงใน Cities (เมือง, รัฐ) ค่า (' บอสตัน ',' MA ');
แทรกลงใน Cities (เมือง, รัฐ) ค่า ('Spingfield', 'MA');
แทรกลงใน Cities (เมือง, รัฐ) ค่า ('พรอ', 'RI');
แทรกลงใน Cities ( เมือง, รัฐ) ค่า ('ฮาร์ตฟอร์ด', 'CT');
แทรกลงใน Cities (เมือง, รัฐ) ค่า ('บาย', 'นิวเจอร์ซีย์');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
ค่า ( 1, '125 ฮาร์วาร์เซนต์.', 'บอสตัน', 'MA', '617-287-0991');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
ค่า (2, '50 Storrow ไดรฟ์ ' 'บอสตัน', 'MA', '617-566-7629');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
ค่า (3, '85 Manton Av ',' พรอ ',' RI ',. '401-453-1234');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
ค่า (4, '40 ถนนเวสต์ ',' ฮาร์ตฟอร์ด ',' CT ',' 860-232-4484 ');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
ค่า (5, '5 เอฟ Av.', 'บาย', 'นิวเจอร์ซีย์', '908-221-0094');
แทรกเข้าไปในร้านค้า (storeno, addr, เมือง, รัฐโทร)
การแปล กรุณารอสักครู่..
คีย์ต่างประเทศ ( attr } . { attr , . } )
( ตารางที่อ้างอิงชื่อ attr } . { attr , . } )
[ ]
การก่อสร้างน้ำตกลบคีย์ต่างประเทศมีตัวเลือกบนน้ำตกลบ . ส่วนบทบาทของตัวเลือกนี้จะกำหนดพฤติกรรมของตารางเมื่อลบเกิดขึ้น
ในโต๊ะที่คีย์หลักเกิดขึ้น คือ เมื่อแถวจะถูกลบออก
จากตารางที่มีคีย์หลักและข้อบนกรอบหน้าต่างเป็น
ระบุไว้แล้วแถวทั้งหมดจากตารางที่มีคีย์ที่ต่างประเทศ
ที่ตรงกับลบออกแถวยังออก
ตัวอย่าง 5.3.1 สมมติว่าเมืองตัวแปรตารางจะถูกสร้างขึ้นโดย :
สร้างเมืองตาราง ( เมือง VAIO HK ( 40 ) ,
สภาพถ่าน ( 2 ) ,
คีย์หลัก ( เมือง , รัฐ ) ) ;
2 ตารางตัวแปร , ร้านค้าบันทึกร้านค้าที่เป็นร้านค้าปลีกมี
ครอบคลุมดินแดนและถูกสร้างขึ้นโดย
สร้างร้านค้าโต๊ะ ( storeno จำนวนเต็มไม่ null
ที่อยู่ VAIO HK ( 40 ) ไม่ใช่ null
เมือง VAIO HK ( 40 ) ,
สภาพถ่าน ( 2 ) ,
เป็น char ( 12 )
storeno คีย์หลัก , คีย์ ต่างประเทศ ( เมือง , รัฐ ) เมืองอ้างอิง ( เมือง , รัฐ ) น้ำตก
บนลบ ) ;
เพื่อใส่โต๊ะที่เรารันคำสั่งต่อไปนี้ :
แทรกเข้าไปในเมือง ( เมืองรัฐ ) ค่า ( 'boston ' 'ma ' ) ;
แทรกเข้าไปในเมือง ( เมือง , รัฐ ) ค่า ( 'spingfield ' 'ma ' ) ;
แทรกเข้าไปในเมือง ( เมือง , รัฐ ) ค่า ( 'providence ' 'ri ' ) ;
แทรกเข้าไปในเมือง ( เมือง , รัฐ ) ค่า ( 'hartford ' 'ct ' ) ;
แทรกเข้าไปในเมือง ( เมือง , รัฐ ) ค่า ( 'bayonne ' 'nj ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , , เมือง , รัฐ , เป็นค่า )
( 1 '125 ฮาร์วาร์ดเซนต์ ' 'boston 'ma '617-287-0991 ' , ' ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , , เมือง , รัฐ , เป็นค่า )
( 2 , '50 storrow ขับ ' 'boston ' 'ma ' '617-566-7629 ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , , เมือง , รัฐ , โทรศัพท์ )
( 3 , 85 ที่ตั้งค่า AV ' 'providence ' 'ri ' '401-453-1234 ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , , เมือง , รัฐ , โทรศัพท์ )
ค่า ( 4 , '40 West Street ' ' 'ct '860-232-4484 'hartford , ' ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , เมือง ,รัฐเรา )
ค่า ( 5 ' 5 ฟิน AV ' 'bayonne ' 'nj ' '908-221-0094 ' ) ;
แทรกเข้าไปในร้าน ( storeno บาป , , เมือง , รัฐ , โทรศัพท์ )
การแปล กรุณารอสักครู่..