MySql插入条件

时间:2017-10-01 19:33:28

标签: mysql

我的要求可行吗?

我想使用admin的密码确保插入。

INSERT INTO `user` (`id`, `pw`, `name`) VALUES (?,?,?) WHERE EXISTS (select * from `admin` where pw=?)

感谢。

2 个答案:

答案 0 :(得分:2)

我倾向于把它写成:

INSERT INTO `user`(`id`, `pw`, `name`)
    SELECT x.id, x.pw, x.name
    FROM (SELECT ? as id, ? as pw, ? as name) x
    WHERE EXISTS (select 1 from `admin` a where a.pw = x.pw);

请注意,您不需要两次包含pw参数(我假设这是您想要的逻辑)。

更重要的是,您似乎希望确保pwadmin中正确有效。实现此目的的真正方法是使用外键约束:

alter table user add constraint fk_user_pw
    foriegn key (pw) references admin(pw);

然后,您不需要insert中的特殊逻辑。如果pw值不匹配,它将失败。

更好的是,这适用于update以及insert

答案 1 :(得分:1)

是 - 但您应该使用SELECT形式的INSERT

li