我正在尝试使用 SELECT 查询语句在具有两列的表中执行 INSERT 语句(item_id 不为空,价格可以为空)。item_id 不是自动增量的,我会从另一个表中进行选择查询。所以一个例子是:
INSERT INTO myTable
SELECT ((SELECT id FROM myCatalogue where name="Item X"), "500");
通过仅执行 SELECT 语句,如果列表中不存在 Item X,则查询将返回:
| SELECT id FROM myCatalogue where name="Item X" | 500 | | 空 | 500 |
但是,当整个 INSERT + SELECT 语句时,将以下内容插入到“myTable”中:
| item_id | 价格 | | 0 | 500 |
我希望 MySQL 在“myCatalogue”中不存在项目时提示我一个错误,例如“无法在 item_id 列中插入值 NULL”,以便我可以返回“myCatalogue”以验证该项目是否存在。但是它会自动将值从 NULL 更改为 0 并成功插入。因此,我想问一下我需要如何修改语句以使其不会将 NULL 更改为 0?
这是我的表定义:
CREATE TABLE myTable
(
item_id int(11) unsigned NOT NULL,
price float unsigned DEFAULT NULL,
PRIMARY KEY (item_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1