gpt4 book ai didi

MySQL 外键问题 rails

转载 作者:行者123 更新时间:2023-11-29 03:13:06 25 4
gpt4 key购买 nike

我正在尝试使用以下代码将外键添加到我的表中:

  constraint_name = "fk_#{from_table}_#{to_table}"
execute %{
CREATE TRIGGER #{constraint_name}_insert
BEFORE INSERT ON #{from_table}
FOR EACH ROW BEGIN
SELECT
RAISE(ABORT, "constraint violation: #{constraint_name}")
WHERE
(SELECT id FROM #{to_table} WHERE
id = NEW.#{from_column}) IS NULL
END
}

我收到以下错误:

Mysql2::Error: Not allowed to return a result set from a trigger:  
CREATE TRIGGER fk_brands_products_insert
BEFORE INSERT ON brands
FOR EACH ROW BEGIN
SELECT
RAISE(ABORT, "constraint violation: fk_brands_products")
FROM brands
WHERE
(SELECT id FROM products WHERE id = NEW.brand_id) IS NULL;
END;

我的 SQL 脚本有什么问题?

最佳答案

您可以像这样添加 MySQL 外键约束:

ALTER TABLE #{from_table}
ADD CONSTRAINT #{constraint_name} FOREIGN KEY
(#{from_column}) REFERENCES #{to_table}(id)

这会将 from_table 上的 from_column 限制为 #{to_table} 中 id 中的值。

P.S:如果您不想命名 CONSTRAINT,您可以这样做:

ALTER TABLE #{from_table}
ADD FOREIGN KEY
(#{from_column}) REFERENCES #{to_table}(id)

关于MySQL 外键问题 rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5068651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com