MySQL外键问题

时间:2011-02-21 10:22:21

标签: mysql

我在MySQL 5.5.8上运行该错误

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE 
      (SELECT id FROM products WHERE id = NEW.brand_id) IS NULL;
      EN' at line 6:  
    CREATE TRIGGER fk_brands_products_insert 
    BEFORE INSERT ON brands 
    FOR EACH ROW BEGIN
    SELECT 
      RAISE(ABORT, "constraint violation: fk_brands_products")
    WHERE 
      (SELECT id FROM products WHERE id = NEW.brand_id) IS NULL;
      END;

可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

您确定可以在查询中引发错误吗?我找不到任何地方。我认为正确的方法是选择COUNT或EXISTS并将该INTO的结果返回给变量。然后,在查询之后,如果结果不符合您的期望,则引发错误。

这样的事情:

SELECT count(id) INTO IDCOUNT FROM products WHERE id = NEW.brand_id;

通过添加真正约束的方式不是更好吗?或者您使用的是不支持的存储类型吗?

答案 1 :(得分:0)

我怀疑问题是你的select语句中没有FROM子句。