簡體   English   中英

我怎樣才能在一個表中有一個名為 table_name 的列,我可以用它來引用 mysql DB 中的其他表?

[英]How can I have a column called table_name in one table which I can use to refer to other tables in mysql DB?

我有一個 web 應用程序,它有多個表。 這些表及其列中的值存儲在 mysql 表中,每個 mysql 表代表應用程序中的一個表。 假設以下是我在 mysql 數據庫中的內容:

table1 with column1_1, column1_2, column1_3
table2 with column2_1, column2_2
table3 with column3_1, column3_2, column3_3, column3_4

我有一個新要求,其中我應該能夠允許用戶對任何表格的任何列進行評論。 為此,我正在創建一個名為“評論”的 mysql 表,其中包含以下字段:

id
table_name (name of table on which comment is being made)
column_name (name of the column on which comment is being made)

目前,table_name 和 column_name 是 varchar。 我想知道是否有一種方法可以限制 table_name 列取當前存在的表名的值,即。 table1、table2 和 table3,還可以使用 table_name 中的條目引用這些表。 同樣,對於 column_name,我希望能夠引用其他表中存在的列。 有沒有辦法做到這一點?

在 MySQL 上, 您可以使用以下查詢獲取架構中表的名稱

SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';

您還可以使用查詢檢索表中列的名稱

SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'your_database_name' AND table_name = 'your_table';

根據 MySQL 的文檔,CHECK 約束不能包含用戶定義的函數或子查詢(以及其他內容)。 您可以編寫一個觸發器來檢查插入的table_name是否有效,如果有效,則檢查column_name是否屬於該表,而不是使用 CHECK 約束。

暫無
暫無

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

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