在商品表和销售单明细数据表之间设置参照完整性,当销售单明细中有相关记录时,不能删除商品表的数据记录,也不能修改商品的商品号。Table Create Table xsdmx CREATE TABLE `xsdmx` (\n `xsdh` varchar(12) NOT NULL,\n `xh` smallint(6) NOT NULL,\n `sph` varchar(4) NOT NULL,\n `sl` smallint(6) NOT NULL,\n `dj` decimal(5,1) NOT NULL,\n `je` decimal(10,1) NOT NULL,\n PRIMARY KEY (`xsdh`,`xh`),\n KEY `sph` (`sph`),\n CONSTRAINT `xsdmx_ibfk_1` FOREIGN KEY (`sph`) REFERENCES `sp` (`sph`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8
时间: 2023-08-12 20:42:22 浏览: 644
建立基本表和数据完整性
好的,根据您提供的表结构,您可以使用以下 SQL 语句来在商品表和销售单明细表之间设置参照完整性:
```
ALTER TABLE xsdmx
ADD CONSTRAINT fk_xsdmx_sph
FOREIGN KEY (sph)
REFERENCES sp (sph)
ON DELETE RESTRICT
ON UPDATE CASCADE;
```
这条语句会向销售单明细表 xsdmx 中添加一个名为“fk_xsdmx_sph”的外键约束,该约束将销售单明细表的“sph”字段与商品表 sp 的“sph”字段关联起来。其中,ON DELETE RESTRICT 表示当尝试删除商品表中的记录时,如果该商品在销售单明细表中有相关记录,则不允许删除;ON UPDATE CASCADE 表示当商品表中的记录的“sph”字段值发生更改时,所有相关的销售单明细表中的“sph”字段值也会被更新。
请注意,这些约束只能在数据库支持外键约束的情况下使用。同时,为了确保完整性约束的有效性,请确保销售单明细表中的所有“sph”字段值都在商品表中存在。
阅读全文