0

我正在尝试设置一个约束,以便在向Item表中插入一条记录时 - 一条记录被插入到itemIndustryCodesLookup分配表中。

这在 MySql (InnoDB) 数据库中是否可行?

我将如何设置它?

例如,这是我希望能够制作的插入物。itemPrice可以为空,因为它默认为 0.00,我itemIndustryCodesLookupId实际上想成为表中的下一个可用itemIndustryCodesLookupIditemIndustryCodesLookup。ColumnisEnabled是一个 Bit 列,默认值为 0。

INSERT INTO `nextcart`.`item`
(`itemId`,
`itemName`,
`itemSku`,
`itemPrice`,
`itemIndustryCodesLookupId`,
`isEnabled`)
VALUES
(
NULL,
'Max Extract All-Terrain Carpet Washer',
'F7452900',
NULL,
NULL,
NULL
);

这是我在Item桌子上运行的 Alter 语句。

ALTER TABLE `item` ADD CONSTRAINT industry_codes_refs FOREIGN KEY (`itemIndustryCodesLookupId`) REFERENCES `itemindustrycodeslookup` (`itemIndustryCodesLookupId`);

这是我得到的错误:错误代码:1048。列“itemIndustryCodesLookupId”不能为空

我想我的另一个问题是,我设置正确吗?

谢谢!

4

2 回答 2

1

1)“我正在尝试设置一个约束,以便在将记录插入项目表时 - 将记录插入到第二个分配表中。

这在 MySql (InnoDB) 数据库中可行吗?”

要实现该功能,您必须使用触发器。

2)您不能使用包含 NULL-s 的列作为告诉您错误的外键。

于 2012-12-23T21:14:11.790 回答
1

我建议使用触发器。在那里,您可以指定将行插入第一个表后执行的查询

于 2012-12-23T21:14:26.983 回答