【发布时间】:2017-03-08 13:12:27
【问题描述】:
我有一个要测试的查询。如果查询在具有现有主键的表中找到数据,则应更新数据。如果没有,则插入到表中。
主键是 int 类型,在属性中我可以看到 Identity 设置为“True”,我认为这意味着如果插入主键,它将自动为主键设置新 id。
MERGE INTO Test_table t
USING (SELECT 461232 ID,'Test1-data' Fascia FROM Test_table) s
ON (t.ID = s.ID)
WHEN MATCHED THEN
UPDATE SET t.Fascia = s.Fascia
WHEN NOT MATCHED THEN
INSERT (Fascia)
VALUES (s.Fascia);
这里的问题是这个查询不起作用,它从不插入数据或更新。此外,查询被编译,我没有得到任何编译错误
另外我想要这个查询的原因是因为我将使用 Java 准备好的语句来查询数据库,所以我假设我可以做到
SELECT ? ID,? Fascia FROM Test_table
这样我就可以在 java 中使用 set 方法传递值。
如果我的查询有问题,请告诉我。
【问题讨论】:
-
“这里的问题是这个查询不起作用”。等我拿我的水晶球来找出问题所在。 “查询给出错误”好吧,那是什么错误,如果您需要我们的帮助,为什么要让我们蒙在鼓里???
-
@HoneyBadger 我不会让你蒙在鼓里......查询不会更新或插入,但它会在没有任何错误的情况下执行。更新的问题。
标签: java sql-server prepared-statement