解决两张表关联,一张表插入一条新数据,另外一张表也跟着插入一条新数据问题

1.问题描述

已知现在有两张表,分别是

user // 用来存放储户的信息
card // 用来存放银行卡的信息

现在要求在给新增一个用户的时候提示给他办理一张银行卡

2. 问题解决

思路:新增用户好办,直接insert就可以了,但是怎样添加银行卡呢?这里我的解决办法是:通过对user表的用户id进行排序,然后获取刚刚插入的那个用户的id,在card中添加进去就可以了
代码:

 INSERT INTO user
      (username,upassword,uidnum,uphonenum,usex)
 VALUE
       (#{username},#{upassword},#{uidnum},#{uphonenum},#{usex});
 
### 设置级联删除 在 PostgreSQL 中,可以通过定义外键约束来实现级联删除功能。这意味着当主中的记录被删除时,所有关联的从记录也将自动被删除。 #### 创建带有级联删除的外键约束 假设存在两个 `orders` `order_items`,其中 `order_items` 通过 `order_id` 字段引用 `orders` : ```sql CREATE TABLE orders ( id SERIAL PRIMARY KEY, customer_name VARCHAR(100), order_date DATE NOT NULL ); CREATE TABLE order_items ( id SERIAL PRIMARY KEY, order_id INT REFERENCES orders(id) ON DELETE CASCADE, -- 添加ON DELETE CASCADE子句 product_name VARCHAR(100), quantity INT CHECK(quantity > 0) ); ``` 上述 SQL 语句中,在创建 `order_items` 时指定了 `REFERENCES orders(id)` 来建立外键关系,并附加了 `ON DELETE CASCADE` 子句[^1]。这示如果某个订单(即 `orders` 中的某条记录)被删除,则该订单下的所有项目(即 `order_items` 中对应的多条记录)都将一同被移除。 #### 验证级联删除效果 为了验证这一机制的有效性,可以尝试向这两个插入一些测试数据后再执行删除操作: ```sql INSERT INTO orders (customer_name, order_date) VALUES ('Alice', '2023-09-01'); INSERT INTO order_items (order_id, product_name, quantity) VALUES ((SELECT id FROM orders WHERE customer_name='Alice'), 'Book', 2); DELETE FROM orders WHERE customer_name = 'Alice'; ``` 此时不仅 `orders` 里的 Alice 的订单会被删除,而且 `order_items` 内属于此订单的商品项也会随之消失。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaozhangtxue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值