我知道这是一个非常古老的问题,但我的一个朋友帮助建立了一个带有“约束”的数据库,其中插入或更新必须有 1 个值与来自不同表中的一个值匹配完全相同的数据库才能启动。
我对 MySQL 调用还不是很擅长,所以我不明白它到底做了什么……但它可以帮助您减少执行所需操作所需的代码?
(注意:我不得不对其进行一些修改以从中删除一些敏感名称等,但它应该是一个很好的表示。)
-- -----------------------------------------------------
-- Table `db1`.`table1`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `db1`.`table1` (
`id` INT NOT NULL AUTO_INCREMENT ,
`av_key` VARCHAR(40) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `db1`.`table2`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `db1`.`table2` (
`bkid` INT NOT NULL AUTO_INCREMENT ,
`id` INT NOT NULL ,
`data` VARCHAR(6144) NULL ,
PRIMARY KEY (`bkid`) ,
INDEX `id_idx` (`id` ASC) ,
CONSTRAINT `id`
FOREIGN KEY (`id` )
REFERENCES `db1`.`table1` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
有了这个,你只需要执行插入/更新语句,如果两个表中的“id”都没有匹配,它就会失败。
不知道您是否已经发现或者这是否是您需要的,但认为值得分享!