簡體   English   中英

MySql 檢查是否存在外鍵約束

[英]MySql check if foreign key constraint exists

如果我有:

create table order_items
( 
  orderid int unsigned not null references orders(orderid),
  isbn char(13) not null,
  quantity tinyint unsigned,

  primary key (orderid, isbn)

);

如何檢查orderid int unsigned not null references orders(orderid)外鍵是否存在?

您可以像這樣使用INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

SELECT *
FROM information_schema.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = '<schema>'
AND REFERENCED_TABLE_NAME = 'order_items'
AND CONSTRAINT_NAME = 'orderid'

您可以使用它來檢查整個數據庫的外鍵約束

SELECT TABLE_NAME ,
    COLUMN_NAME,
    CONSTRAINT_NAME,
    REFERENCED_TABLE_NAME,
    REFERENCED_COLUMN_NAME
FROM
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE

需要檢查特定表意味着請在上述查詢中添加此 where 條件

WHERE
    REFERENCED_TABLE_SCHEMA = 'student' AND REFERENCED_TABLE_NAME = 'student_details'
IF EXISTS(
    SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE REFERENCED_TABLE_NAME = 'referenceTableName' AND TABLE_SCHEMA  = 'schemaName' AND TABLE_NAME = 'mainTableName' AND CONSTRAINT_NAME = 'constraintName'
)THEN
    //Execute query whatever you need
END IF;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM