Использовать INSERT ... SELECT
синтаксис, а не INSERT ... VALUES
:
INSERT INTO Product
( ProductName, Description, Brand, Size, Variety, Manufacturer,
Family, Category, SubCategory
)
SELECT
'm','m','m','m','m','m','m','m','m'
FROM dual
WHERE not exists
(select * from Product where Product.ProductName='m')
Если это для MS-Access, то у вас нет таблицы dual
. Вы можете либо создать фиктивную таблицу dual
- только с одной строкой - и использовать ее впоследствии, либо использовать это:
INSERT INTO Product
( ProductName, Description, Brand, Size, Variety, Manufacturer,
Family, Category, SubCategory
)
SELECT
'm','m','m','m','m','m','m','m','m'
FROM
(SELECT TOP 1 * FROM a_table_with_at_least_one row) AS dummy
WHERE not exists
(select * from Product where Product.ProductName='m')
Если, однако, вы никогда не захотите иметь 2 строки с одинаковым Product.ProductName
, тогда вы можете просто объявить столбец Product.ProductName
как UNIQUE
и использовать синтаксис INSERT ... VALUES
- без части WHERE NOT EXISTS
, просто штраф:
INSERT INTO Product
( ProductName, Description, Brand, Size, Variety, Manufacturer,
Family, Category, SubCategory
)
VALUES
('m','m','m','m','m','m','m','m','m')
При попытке добавить вторую строку с тем же именем продукта, что и существующее, будет выдана ошибка.