简体   繁体   中英

MySQL foreign key problem

I'm getting that error running on 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;

What could be wrong?

Are you sure you can raise errors inside a query like that? I can't find it anywhere. I think the proper way would be to select a COUNT or EXISTS and return the result of that INTO a variable. Then, after the query, raise an error if the result doesn't meet your expectations.

Something like this:

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

Wouldn't it be better by the way to just add a real constraint? Or do you use a storage type that doesn't support that?

我怀疑问题出在您的select语句中没有FROM子句。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM