# system.db.runSFUpdateQuery ，Duplicate keys violate unique of database, always return True?

**URL:** <https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [November 27, 2024, 8:07am UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169 "2024-11-27T08:07:12Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![taohongyu88](https://avatars.discourse-cdn.com/v4/letter/t/f05b48/32.png) [@taohongyu88](https://forum.inductiveautomation.com/u/taohongyu88)\
**Post date:** [November 27, 2024, 8:07am UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169/1 "2024-11-27T08:07:12Z")

</div>

In Postgres Database, I set a unique of table.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/3/9376ea7c40aed29113a357fb84f2243c55de1c77.png)

But when I do it in Script, it always return True?

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/c/9cc3bf941c6edd7c98dd1a4e882abe5f1fd526fa.png)

I think it's right to return False not True?

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [November 27, 2024, 9:06am UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169/2 "2024-11-27T09:06:43Z")

</div>

Why are you using SF?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [November 27, 2024, 12:24pm UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169/3 "2024-11-27T12:24:40Z")

</div>

The Store and Forward system cannot report the final result from the database, because it doesn't (cannot) wait for that to return. The "True" means the request was successfully **queued** in the S&F system.

If you need to handle actual database errors, you cannot use S&F.

Consider using an `ON CONFLICT` clause in your SQL to pre-emptively handle ID clashes. Then you **can** use S&F without generating quarantined elements.

---

<div class="post-metadata">

**Author:** ![taohongyu88](https://avatars.discourse-cdn.com/v4/letter/t/f05b48/32.png) [@taohongyu88](https://forum.inductiveautomation.com/u/taohongyu88)\
**Post date:** [November 28, 2024, 2:51am UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169/4 "2024-11-28T02:51:06Z")

</div>

![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/5/65dc8087a2de5d95651e86fa516f45a5c9f8463d.png)  
I use this script "system.db.runPrepUpdate"  
I can see the log is error in print log.  
But How can I judgment this error in id?

---

<div class="post-metadata">

**Author:** ![taohongyu88](https://avatars.discourse-cdn.com/v4/letter/t/f05b48/32.png) [@taohongyu88](https://forum.inductiveautomation.com/u/taohongyu88)\
**Post date:** [November 28, 2024, 3:21am UTC](https://forum.inductiveautomation.com/t/system-db-runsfupdatequery-duplicate-keys-violate-unique-of-database-always-return-true/99169/5 "2024-11-28T03:21:24Z")

</div>

postgresql **ON CONFLICT**

```python
INSERT INTO public.pc(processname, pno, productname)
VALUES ('PP','2024112701','产品3')
ON CONFLICT (processname,pno,productname)
DO NOTHING;

```

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/4/a/4a4da99e12a8f91bea0c9a49a9ab47b743e89d72.png)

If success return id=1,else return id=0;  
I think it's right.  
Thank you very much!
