使用MS SQL-SERVER
我想知道是否有可能或更好地说是将值插入表中的最有效方法,其中插入的值之一依赖于另一个表,如果另一个表上不存在Select查询,则会不要这样做。
例如下一个查询
INSERT INTO producto VALUES
('ad-101', '27', 'Nissan','NP300','2016','aer3457','1',(SELECT Id from Inventario WHERE Serie = '5161017293')),
('ad-102', '27', 'Nissan','NP300','2015','aer5647','1',(SELECT Id from Inventario WHERE Serie = '5161019329'))
如果表中没有5161019329
Invetory,则只插入了1行。
我知道我总是可以对选择部分进行单独的查询,然后在php上插入或不插入我的逻辑,但这并不是那么有效,因为有时我可以同时插入100行。< / p>
谢谢,
答案 0 :(得分:0)
如果您选择的ID号返回的列不是可为空的列,则mysql应该阻止插入并抛出错误。
答案 1 :(得分:0)
您可以使用以下查询,它应该可以正常工作
INSERT INTO producto
SELECT
'ad-101', '27', 'Nissan','NP300','2016','aer3457','1', Id FROM Inventario WHERE Serie = '5161017293'
如果Incentario
中没有Serie
5161017293的行,则不会插入任何数据。
答案 2 :(得分:-1)
PDO有一个rowCount()函数,可以调用它来计算你所做查询的行数,如果这是你的意思。 (这个问题没有意义)
你可以尝试:
$query = $handler->query("Your select query");
if ($query->rowCount() == 0) {
// Insert Query
}
除此之外我没有多少使用MySQLi连接,但你可以使用从0开始的$count++
变量循环查询,然后如果$count
变量等于0则插入查询后来的逻辑。
很抱歉,如果答案没有意义,但问题也没有。