我使用java DB数据库和NetBeans 8.0作为桌面应用程序
我还使用PreparedStatement来查询数据库。
是创建表的代码。
CREATE TABLE ALUMNUS (
ALUMNUA_ID INT NOT NULL PRIMARY KEY
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
FIRST_NAME VARCHAR (45),
LAST_NAME VARCHAR (45),
OTHER_NAME VARCHAR (100)
);
CREATE TABLE DUES (
ID INT NOT NULL PRIMARY KEY
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
PAYMENT_YEAR DATE,
AMOUNT DOUBLE,
ALUMNUS_ID INT
);
--FOREIGN KEY
ALTER TABLE APP.DUES
ADD FOREIGN KEY (ALUMNUS_ID) REFERENCES APP.ALUMNUS(ID);
现在我想在app .会费表中插入、删除和更新外键值。什么是最好的选择;触发器、存储过程还是preparedstatement?
如果希望主要插入到会费表中,则可以在SQL中使用子选择。我没有用Java DB测试它,但它基本上看起来像:
INSERT INTO DUES(PAYMENT_YEAR, AMOUNT,ALUMNUS_ID)
VALUES(2014, 100.0,
(SELECT ALUMNUA_ID from ALUMNUS where ...));
您需要捕获"not found"错误情况并添加INSERT(并且还需要捕获重复的情况)。
参见:将数据插入外键链接的表