java - 如何创建存储过程以从 Oracle SQL Developer 中的表中删除项目?
问题描述
我对 sql 很陌生,我正在尝试从 BANK_PERSON 表中删除一行人员数据及其 FK 约束。我正在使用 JDBC 声明一个可调用语句,该语句接受一个用户名,然后在 sql 中调用一个存储过程并从数据库中删除一个人。我知道创建存储过程的基本过程,但我不知道如何在我的情况下这样做。这是我的 BANK_PERSON 表和带有 FK 约束的 MY BANK_ACCOUNT 表。
CREATE TABLE BANK_PERSON (
ID_NUMBER INTEGER PRIMARY KEY,
FIRSTNAME VARCHAR2(30),
LASTNAME VARCHAR2(30),
USERNAME VARCHAR2(30),
PASS VARCHAR2(30),
RANK INTEGER
);
CREATE TABLE BANK_ACCOUNT (
ACCOUNT_NUMBER INTEGER PRIMARY KEY,
ACCOUNT_BALANCE NUMBER(10,2),
FOREIGN KEY(ACCOUNT_NUMBER) REFERENCES BANK_PERSON(ID_NUMBER));
解决方案
首先,我建议ON DELETE CASCADE
为您的 FK 使用选项,它允许您自动删除所有子条目。换句话说,使用以下脚本创建BANK_ACCOUNT
表:
CREATE TABLE BANK_ACCOUNT (
ACCOUNT_NUMBER INTEGER PRIMARY KEY,
ACCOUNT_BALANCE NUMBER(10,2),
FOREIGN KEY(ACCOUNT_NUMBER) REFERENCES A1(ID_NUMBER) ON DELETE CASCADE);
然后使用以下脚本创建过程:
CREATE OR REPLACE
PROCEDURE DELETE_PERSON
(USERNAME IN VARCHAR2) AS
BEGIN
delete from BANK_PERSON where BANK_PERSON.USERNAME like DELETE_PERSON.USERNAME;
END DELETE_PERSON;
最后调用新创建的程序:
EXECUTE DELETE_PERSON('Marcus');
希望这是你想要得到的。
推荐阅读
- matlab - MATLAB R2017b。NARX 神经网络 - 输入信号和网络输入的数量不匹配
- javascript - 反应属性消失
- python - 多维数组的所有值在追加时发生变化 - Python
- case - 使用多个案例查询的结果更新单个记录
- c++11 - 没有定义嵌套类的优先级队列的自定义比较器
- django - 将控制台中的数据存储在数据库中并访问它
- python - 基于过滤器使用来自第二个数据帧的值更新数据帧
- javascript - 将 PostGIS 点对象转换为 geoJSON 以进行映射
- selenium - 如何使 Selenium WebDriverWait 等待页面上未指定位置的文本
- javascript - 执行源自从 AJAX 加载的外部文件的脚本