ข้ามไปที่เนื้อหาหลัก
การสนับสนุน
ลงชื่อเข้าใช้
ลงชื่อเข้าใช้ด้วย Microsoft
ลงชื่อเข้าใช้หรือสร้างบัญชี
สวัสดี
เลือกบัญชีอื่น
คุณมีหลายบัญชี
เลือกบัญชีที่คุณต้องการลงชื่อเข้าใช้

ข้อจำกัด จะคล้ายกับ ดัชนี แม้ว่าจะสามารถใช้ทำ ความสัมพันธ์ กับตารางอื่นได้เช่นกันก็ตาม

คุณสามารถใช้ส่วนคําสั่ง CONSTRAINT ในคําสั่ง ALTER TABLE และ CREATE TABLE เพื่อสร้างหรือลบข้อจํากัด ส่วนคําสั่ง CONSTRAINT มีอยู่สองชนิด คือ ชนิดหนึ่งสําหรับการสร้างข้อจํากัดบนเขตข้อมูลเดียว และอีกชนิดสําหรับการสร้างข้อจํากัดบนเขตข้อมูลมากกว่าหนึ่งเขตข้อมูล

หมายเหตุ: กลไกจัดการฐานข้อมูลของ Microsoft Access ไม่สนับสนุนการใช้คําสั่ง CONSTRAINT หรือคําสั่งภาษากําหนดโครงสร้างข้อมูลใดๆ กับฐานข้อมูลที่ไม่ใช่ Microsoft Access ใช้วิธีการสร้าง DAO แทน

ไวยากรณ์

ข้อจำกัดแบบเขตข้อมูลเดี่ยว:

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreigntable [(foreignfield1, foreignfield2)]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

ข้อจำกัดแบบหลายเขตข้อมูล:

CONSTRAINT name
{PRIMARY KEY (primary1[, primary2 [, ...]]) |
UNIQUE (unique1[, unique2 [, ...]]) |
NOT NULL (notnull1[, notnull2 [, ...]]) |
FOREIGN KEY [NO INDEX] (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [, foreignfield2 [, ...]])]
[ON UPDATE CASCADE | SET NULL]
[ON DELETE CASCADE | SET NULL]}

ส่วนคำสั่ง CONSTRAINT มีส่วนต่างๆ ดังนี้:

ส่วน

คำอธิบาย

name

ชื่อของข้อจำกัดที่จะถูกสร้าง

primary1, primary2

ชื่อของหนึ่งหรือหลายเขตข้อมูลที่จะถูกกำหนด คีย์หลัก

unique1, unique2

ชื่อของหนึ่งหรือหลายเขตข้อมูลที่จะถูกกำหนดเป็นคีย์เฉพาะ

notnull1, notnull2

ชื่อของหนึ่งหรือหลายเขตข้อมูลที่ถูกจำกัดไว้ที่ค่าที่ไม่เป็น Null

ref1, ref2

ชื่อของหนึ่งหรือหลายเขตข้อมูลของ Foreign Key ที่อ้างอิงเขตข้อมูลในตารางอื่น

foreigntable

ชื่อของ ตาราง Foreign Key ที่ประกอบด้วยหนึ่งหรือหลายเขตข้อมูลที่ระบุโดย foreignfield

foreignfield1, foreignfield2

ชื่อของเขตข้อมูลใน foreigntable ที่ระบุโดย ref1, ref2 คุณสามารถละส่วนคําสั่งนี้ได้ ถ้าเขตข้อมูลที่อ้างอิงเป็นคีย์หลักของ ForeignTable


ข้อสังเกต

คุณใช้ไวยากรณ์สำหรับข้อจำกัดแบบเขตข้อมูลเดี่ยวในส่วนคำสั่งข้อกำหนดเขตข้อมูลของคำสั่ง ALTER TABLE หรือ CREATE TABLE ที่อยู่หลังจากข้อกำหนดของชนิดข้อมูลของเขตข้อมูล

คุณใช้ไวยากรณ์สำหรับข้อจำกัดแบบหลายเขตข้อมูลเมื่อใดก็ตามที่คุณใช้ คำสงวน CONSTRAINT ภายนอกส่วนคำสั่งข้อกำหนดเขตข้อมูลในคำสั่ง ALTER TABLE หรือ CREATE TABLE

ด้วยการใช้ CONSTRAINT คุณสามารถกำหนดเขตข้อมูลให้เป็นหนึ่งในชนิดของข้อจำกัดต่อไปนี้ได้:

  • คุณสามารถใช้คําสงวน UNIQUE เพื่อกําหนดเขตข้อมูลเป็นคีย์เฉพาะได้ ซึ่งหมายความว่าไม่มีสองระเบียนในตารางที่สามารถมีค่าเดียวกันในเขตข้อมูลนี้ คุณสามารถจํากัดเขตข้อมูลหรือรายการเขตข้อมูลใดๆ ที่ไม่ซ้ําได้ ถ้าข้อจํากัดแบบหลายเขตข้อมูลถูกกําหนดให้เป็นคีย์เฉพาะ ค่ารวมของเขตข้อมูลทั้งหมดในดัชนีจะต้องไม่ซ้ํากัน แม้ว่าระเบียนอย่างน้อยสองระเบียนมีค่าเดียวกันในเขตข้อมูลเดียวก็ตาม

  • คุณสามารถใช้คําสงวน PRIMARY KEY เพื่อกําหนดหนึ่งเขตข้อมูลหรือชุดของเขตข้อมูลในตารางเป็นคีย์หลักได้ ค่าทั้งหมดในคีย์หลักต้องไม่ซ้ํากันและไม่ เป็น Null และสามารถมีคีย์หลักสําหรับตารางได้เพียงคีย์เดียวเท่านั้น

    หมายเหตุ: อย่าตั้งค่าข้อจำกัด PRIMARY KEY ในตารางที่มีคีย์หลักอยู่แล้ว ข้อผิดพลาดจะเกิดขึ้นถ้าคุณทำเช่นนั้น

  • คุณสามารถใช้คําสงวน FOREIGN KEY เพื่อกําหนดเขตข้อมูลเป็น Foreign Key ได้ ถ้าคีย์หลักของตาราง Foreign ประกอบด้วยเขตข้อมูลมากกว่าหนึ่งเขตข้อมูล คุณต้องใช้ข้อกําหนดข้อจํากัดแบบหลายเขตข้อมูล แสดงรายการเขตข้อมูลการอ้างอิงทั้งหมด ชื่อของตารางภายนอก และชื่อของเขตข้อมูลที่อ้างอิงในตารางภายนอกตามลําดับเดียวกับที่แสดงรายการเขตข้อมูลอ้างอิง ถ้าเขตข้อมูลที่อ้างอิงเป็นคีย์หลักของตาราง Foreign คุณไม่จําเป็นต้องระบุเขตข้อมูลที่อ้างอิง ตามค่าเริ่มต้น กลไกจัดการฐานข้อมูลจะทํางานเหมือนกับว่าคีย์หลักของตารางภายนอกเป็นเขตข้อมูลที่อ้างอิง

    ข้อจำกัดคีย์นอกกำหนดให้การกระทำบางอย่างถูกดำเนินการเมื่อค่าคีย์หลักที่เกี่ยวข้องถูกเปลี่ยนแปลง

  • คุณสามารถระบุการกระทําที่จะดําเนินการในตารางภายนอกโดยยึดตามการกระทําที่สอดคล้องกันที่ทําบนคีย์หลักในตารางที่กําหนด CONSTRAINT ตัวอย่างเช่น ให้พิจารณาข้อกําหนดต่อไปนี้สําหรับตาราง Customers

CREATE TABLE Customers (CustId INTEGER PRIMARY KEY, CLstNm NCHAR VARYING (50))

พิจารณาข้อกำหนดของตาราง Orders ต่อไปนี้ ซึ่งกำหนดความสัมพันธ์คีย์นอกที่อ้างอิงคีย์หลักของตาราง Customers:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE CASCADE ON DELETE CASCADE

ทั้ง ON UPDATE CASCADE และส่วนคําสั่ง ON DELETE CASCADE จะถูกกําหนดบนคีย์นอก ส่วนคําสั่ง ON UPDATE CASCADE หมายความว่า ถ้ามีการอัปเดตตัวระบุของลูกค้า (CustId) ในตารางลูกค้า การอัปเดตจะถูกเรียงซ้อนผ่านตารางใบสั่งซื้อ คําสั่งซื้อแต่ละใบที่มีค่ารหัสลูกค้าที่สอดคล้องกันจะได้รับการอัปเดตโดยอัตโนมัติด้วยค่าใหม่ ส่วนคําสั่ง ON DELETE CASCADE หมายความว่าถ้าลูกค้าถูกลบจากตารางลูกค้า แถวทั้งหมดในตาราง Orders ที่มีค่าตัวระบุลูกค้าเดียวกันจะถูกลบด้วย

พิจารณาข้อกำหนดที่แตกต่างกันของตาราง Orders ต่อไปนี้ ซึ่งใช้การกระทำ SET NULL แทน CASCADE:

CREATE TABLE Orders (OrderId INTEGER PRIMARY KEY, CustId INTEGER, OrderNotes NCHAR VARYING (255), CONSTRAINT FKOrdersCustId FOREIGN KEY (CustId) REFERENCES Customers ON UPDATE SET NULL ON DELETE SET NULL

ส่วนคําสั่ง ON UPDATE SET NULL หมายความว่า ถ้าตัวระบุของลูกค้า (CustId) ถูกอัปเดตในตารางลูกค้า ค่า Foreign Key ที่สอดคล้องกันในตาราง Orders จะถูกตั้งค่าเป็น NULL โดยอัตโนมัติ ในทํานองเดียวกัน ส่วนคําสั่ง ON DELETE SET NULL หมายความว่าถ้าลูกค้าถูกลบจากตารางลูกค้า คีย์นอกที่เกี่ยวข้องทั้งหมดในตาราง Orders จะถูกตั้งค่าเป็น NULL โดยอัตโนมัติ

เมื่อต้องการป้องกันการสร้างดัชนีสําหรับคีย์นอกโดยอัตโนมัติ คุณสามารถใช้ตัวปรับเปลี่ยน NO INDEX ได้ ข้อกําหนดคีย์นอกรูปแบบนี้ควรใช้เฉพาะในกรณีที่ค่าดัชนีที่เป็นผลลัพธ์มักจะซ้ํากัน เมื่อค่าในดัชนี Foreign Key ซ้ํากันบ่อยครั้ง การใช้ดัชนีอาจมีประสิทธิภาพน้อยกว่าการดําเนินการสแกนตาราง รักษาดัชนีชนิดนี้ พร้อมกับแถวที่แทรกและลบออกจากตาราง ลดประสิทธิภาพการทํางานและไม่ได้ให้ประโยชน์ใดๆ



ต้องการความช่วยเหลือเพิ่มเติมหรือไม่

ต้องการตัวเลือกเพิ่มเติมหรือไม่

สํารวจสิทธิประโยชน์ของการสมัครใช้งาน เรียกดูหลักสูตรการฝึกอบรม เรียนรู้วิธีการรักษาความปลอดภัยอุปกรณ์ของคุณ และอื่นๆ

ชุมชนช่วยให้คุณถามและตอบคําถาม ให้คําติชม และรับฟังจากผู้เชี่ยวชาญที่มีความรู้มากมาย

ข้อมูลนี้เป็นประโยชน์หรือไม่

คุณพึงพอใจกับคุณภาพภาษาเพียงใด
สิ่งที่ส่งผลต่อประสบการณ์ใช้งานของคุณ
เมื่อกดส่ง คำติชมของคุณจะถูกใช้เพื่อปรับปรุงผลิตภัณฑ์และบริการของ Microsoft ผู้ดูแลระบบ IT ของคุณจะสามารถรวบรวมข้อมูลนี้ได้ นโยบายความเป็นส่วนตัว

ขอบคุณสำหรับคำติชมของคุณ!

×