我的要求可行吗?
我想使用admin的密码确保插入。
INSERT INTO `user` (`id`, `pw`, `name`) VALUES (?,?,?) WHERE EXISTS (select * from `admin` where pw=?)
感谢。
答案 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
参数(我假设这是您想要的逻辑)。
更重要的是,您似乎希望确保pw
在admin
中正确有效。实现此目的的真正方法是使用外键约束:
alter table user add constraint fk_user_pw
foriegn key (pw) references admin(pw);
然后,您不需要insert
中的特殊逻辑。如果pw
值不匹配,它将失败。
更好的是,这适用于update
以及insert
。
答案 1 :(得分:1)
是 - 但您应该使用SELECT形式的INSERT
li