Mysql
將新記錄添加到目前表時創建新表的 SQL 觸發器
自從我從事數據庫工作以來已經有好幾年了。我正在使用 mysql 工作台(使用 MS Access 作為前端)。
我有一個要進行多重連結的基表(基本上是名稱索引類型的東西)。通過表單更新表(添加了一條記錄),我希望該新記錄觸發一個創建表的事件,並且該表根據使用者在表單/記錄中輸入的內容命名。
關於如何做到這一點的任何想法?您推薦閱讀的好教程/文件?謝謝!
第一件事
你會用這個來為每個 id 創建特殊的表 Name 和你必須添加的表
DELIMITER $$ CREATE TRIGGER after_table_insert AFTER INSERT ON tabl1 FOR EACH ROW BEGIN SET @sql = CONCAR("CREATE TABLE table_",NEW.name,"_",NEW.ID, " (id INT,name TEXT)"); PREPARE stmt1 FROM @sql; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END$$ DELIMITER ;
如果你有一張適合所有人的桌子
CREATE TABLE Table1_companion ( id BIGINT AUTO_INCREMENT PRIMARY KEy , Refid INTEGER ,col1 TEXT ,col2 TEXT ,FOREIGN KEY (Refid) REFERENCES tavle1(id));
所以你有了
SELECT t1.*,t2.* FROM table1 t1 INNER JOIN Table1_companion t2 ON t1.id = t2.Refid;
當你有一個:m 關係
你需要兩張桌子
CREATE TABLE Table1_companion ( tc_id BIGINT AUTO_INCREMENT PRIMARY KEy ,col1 TEXT ,col2 TEXT); CREATE TABLE Table1_relation ( , Ref_id INTEGER , Ref_tc_id BIGINT ,FOREIGN KEY (Ref_id) REFERENCES table1(id) ,FOREIGN KEY (Ref_tc_id) REFERENCES Table1_companion(tc_id ));
當然,您需要兩個連接。
你可以看看標準化。
這樣你就有了一個關係數據庫,它適用於每個 rdms。
這當然只是一個基本的想法,你必須有自己的數據類型和外鍵需要雙方相同的數據類型,並且永遠記住每個資訊在你的數據庫中只有一次