帐户(编号,姓名,余额,建立日期,储蓄所编号) 储蓄所(编号,名称,地址,人数,所属城市) 借贷(帐户,借贷类型,金额,日期) 建立储蓄所的delete 触发器,只有当此储蓄所没有帐户时才可删除,若有销售记录不能删除。
时间: 2024-05-09 14:15:48 浏览: 25
可以使用以下 SQL 代码创建储蓄所表和帐户表:
```sql
CREATE TABLE 储蓄所 (
编号 INT PRIMARY KEY,
名称 VARCHAR(50),
地址 VARCHAR(100),
人数 INT,
所属城市 VARCHAR(50)
);
CREATE TABLE 帐户 (
编号 INT PRIMARY KEY,
姓名 VARCHAR(50),
余额 DECIMAL(10, 2),
建立日期 DATE,
储蓄所编号 INT,
FOREIGN KEY (储蓄所编号) REFERENCES 储蓄所(编号)
);
CREATE TABLE 借贷 (
帐户编号 INT,
借贷类型 VARCHAR(10),
金额 DECIMAL(10, 2),
日期 DATE,
PRIMARY KEY (帐户编号, 借贷类型),
FOREIGN KEY (帐户编号) REFERENCES 帐户(编号)
);
```
然后,可以使用以下 SQL 代码创建触发器:
```sql
CREATE TRIGGER 删除储蓄所触发器
BEFORE DELETE ON 储蓄所
FOR EACH ROW
BEGIN
-- 检查是否有帐户
DECLARE account_count INT;
SELECT COUNT(*) INTO account_count FROM 帐户 WHERE 储蓄所编号 = OLD.编号;
IF account_count > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '此储蓄所有帐户,不能删除';
END IF;
-- 检查是否有销售记录
DECLARE sale_count INT;
SELECT COUNT(*) INTO sale_count FROM 借贷 WHERE EXISTS (
SELECT * FROM 帐户 WHERE 帐户.编号 = 借贷.帐户编号 AND 帐户.储蓄所编号 = OLD.编号
);
IF sale_count > 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '此储蓄所有销售记录,不能删除';
END IF;
END;
```
这个触发器会在删除储蓄所之前检查是否有帐户和销售记录,如果有则会抛出异常,阻止删除操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)