我试图只将新记录插入数据库,如果该记录尚未存在但它不起作用

时间:2016-07-08 10:53:44

标签: java sql derby

这是我的代码,在将新记录输入sql数据库之前检查系统中是否已存在记录。

Z

我正在使用Java,我的sql和derby数据库。 我想要做的是当一个新项目输入系统时,sql语句将检查这些项目是否已经在系统中。

这个sql语句有什么问题

2 个答案:

答案 0 :(得分:3)

使用insert . . . values无法执行您想要的操作。所以请改用insert . . . select。代码应如下所示:

INSERT INTO Stock(name, cost_price, selling_price, numberinstock, supplier) 
    Select ?, ?, ?, ?, ?
    from sysibm.sysdummy1
    Where not exists (select * from Stock where name = "+NameTextField+");

但是,您应该将名称的第二个引用作为参数传递,就像所有其他引用一样:

INSERT INTO Stock(name, cost_price, selling_price, numberinstock, supplier) 
    Select ?, ?, ?, ?, ?
    from sysibm.sysdummy1
    Where not exists (select 1 from Stock where name = ?);

答案 1 :(得分:0)

尝试使用触发器

Create Trigger Modified_Order_Trigger
   On Orders
   After Update --as per youe need "insert, delete, update"
   AS

     Insert Into tablename (tables fileds)
       SELECT tablefileds
       FROM INSERTED