iT邦幫忙

0

[SQL] - integrity constraint violation

sql
  • 分享至 

  • xImage
  •  

當修改資料庫資料,違反資料表之間的關聯性,可能就會遇到 integrity constraint violation 問題。

常見的有這三種:

  1. foreign key constraint
  2. unique constraint
  3. check constraint

今天要分享的是 foreign key contraint,發生在刪除資料時,child table 發生了 initegrity constraint violation 問題,也就是其 referenced 的資料將要被刪除,但仍然被 child table referencing。

解決辦法即是在 child table 的 foreign key 加上 cascade on delete,當 parent table 刪資料時,child table 的資料也會被刪除。

範例: cascade on delete

CREATE TABLE orders (
  order_id int NOT NULL AUTO_INCREMENT,
  customer_id int NOT NULL,
  order_date date,
  PRIMARY KEY (order_id),
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE
);

CREATE TABLE order_items (
  item_id int NOT NULL AUTO_INCREMENT,
  order_id int NOT NULL,
  item_name varchar(255),
  quantity int,
  PRIMARY KEY (item_id),
  FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE
);

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言