MySQL จะสร้าง FK โดยอ้างอิง 2 คอลัมน์ยังไงคะ ?

เกี่ยวกับ ปัญหาการใช้งาน การติดตั้ง ฐานข้อมูล MySql Oracle MSSQL ect...
การเขียน คำสั่ง SQL เพื่อดึกข้อมูล บอร์ดนี้ควรระบุโครงสร้างตารางของท่านในคำถามด้วยนะ

Moderator: mindphp

DimmerP

MySQL จะสร้าง FK โดยอ้างอิง 2 คอลัมน์ยังไงคะ ?

โพสต์ที่ยังไม่ได้อ่าน โดย DimmerP »

โค้ด: เลือกทั้งหมด


CREATE TABLE invoice_inventory
(vendor_no char(4) not null,
invoice_no char(4) not null,
item_no char(4) not null references inventory_item(item_no),
quantity_added int not null,
item_paid decimal not null,
primary key (vendor_no,invoice_no,item_no))

FOREIGN KEY (vendor_no,invoice_no) REFERENCES invoice(vendor_no,invoice_no)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = INNODB CHARSET = tis620


ใช้คำสั่งแบบนี้แล้ว สร้างไม่ได้ค่ะ

พอไปเพิ่มใน มุมมองรีเลชั่นใน phpmyadmin แล้วเป็นแบบนี้ค่ะ

Error creating foreign key (check data types) : invoice_no

ไปอ่านใน

http://dev.mysql.com/doc/refman/5.0/en/ ... aints.html

แล้วก็ งง ค่ะ คือมีเวลาไม่มาก ฝากผู้รู้ช่วยตอบด้วยนะคะ


ขอบคุณค่ะ _/|\_
แก้ไขล่าสุดโดย mindphp เมื่อ 23/01/2012 11:19 pm, แก้ไขไปแล้ว 1 ครั้ง.
เหตุผล: ย้ายกระทู้โพสผิดหมวด
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41384
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: MySQL จะสร้าง FK โดยอ้างอิง 2 คอลัมน์ยังไงคะ ?

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ลองเช็ค data type ของ Field ในตาราง invoice ที่มันแจ้ง Error ออกมาครับ
ว่าตาราง invoice กำหนด ไว้เหมือนกันตารางที่ท่านต้องการสร้างหรือเปล่า
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
touleg
PHP Super Member
PHP Super Member
โพสต์: 480
ลงทะเบียนเมื่อ: 25/01/2010 11:57 pm
ติดต่อ:

Re: MySQL จะสร้าง FK โดยอ้างอิง 2 คอลัมน์ยังไงคะ ?

โพสต์ที่ยังไม่ได้อ่าน โดย touleg »

โค้ด: เลือกทั้งหมด

CREATE TABLE invoice_inventory(
vendor_no char(4) not null,
invoice_no char(4) not null,
item_no char(4) not null,
quantity_added int not null,
item_paid decimal not null,
primary key (vendor_no,invoice_no,item_no),
FOREIGN KEY (vendor_no) REFERENCES vender(vendor_no) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (invoice_no) REFERENCES invoice(invoice_no) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (item_no) REFERENCES inventory_item(item_no) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB CHARSET=tis620
หมายเหตุ:
- ถ้าเซต on update เป็น cascade ระวังจะลบข้อมูลไม่ได้นะครับ แนะนำให้ปล่อยเป็น default ไป
- ตารางแม่ที่ตารางลูกเชื่อม FK ไปจะต้องเป็น Engine innodb ด้วยไม่งั้น FK กันไม่ได้
- ชนิดของข้อมูลของ Field ที่ references จะต้องตรงกัน
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 80