Re: Insert records in the tavke only if they are not exist
От | Adrian Klaver |
---|---|
Тема | Re: Insert records in the tavke only if they are not exist |
Дата | |
Msg-id | acfaa89e-fd23-4318-b946-645e6e0b1749@aklaver.com обсуждение исходный текст |
Ответ на | Re: Insert records in the tavke only if they are not exist (Igor Korot <ikorot01@gmail.com>) |
Ответы |
Re: Insert records in the tavke only if they are not exist
|
Список | pgsql-general |
On 12/7/24 09:59, Igor Korot wrote: > Hi, Adrian, > > On Sat, Dec 7, 2024 at 11:18 AM Adrian Klaver <adrian.klaver@aklaver.com> wrote: >> >> On 12/6/24 19:36, Igor Korot wrote: >>> Hi, All, >>> >>> When my application starts up, ot creates some tables and insert records >>> in them. >>> >>> When the app starts for the second time it should check if the tables >>> and the records in them are exist and skip the process. >> >> Does this also apply to starts after the second time? > > Yes, it does. > > However, if the new table is created in the meantime - the new record > should be created, because it is not there yet. What determines that a new table needs to be created and populated? > >> >> Is the data expected to change over time? > > Data change is possible. > > This is one of the tables: > > "CREATE TABLE IF NOT EXISTS \"sys.abcatfmt\"(\"abf_name\" char(30) > NOT NULL, \"abf_frmt\" char(254), \"abf_type\" smallint, \"abf_cntr\" > integer" ));"; > "CREATE UNIQUE INDEX IF NOT EXISTS pbcatf_x ON > \"sys.abcatfmt\"(\"abf_name\" ASC);"; > > My understanding is that "INSERT OR IGNORE" will check the unique It is INSERT ... ON CONFLICT DO NOTHING | UPDATE. > index and will not do anything if the recrd > with such data on the index already exists. So you have the option of either skipping the insert or updating selected fields in the row. > >> >>> >>> Everything is good, except what if I have a connection from 2 different >>> users? >> Is it possible to have the app start up without external users connecting? > > Not sure what you mean here. > > Are you asking if the computer can run the app? > Then the answer is NO. App is always started by the user. > Please clarify. This is going to need a more detailed explanation of what 'app' means. Are you talking about the front end that the user launches or the backend that runs the database or something else? > > Thank you. > >> >>> >>> I can run this inside transaction, but will this be enough? Will stating >>> transaction lock the DB and the second user will wait for transaction to >>> complete? >>> >>> Thank you. >>> >> >> -- >> Adrian Klaver >> adrian.klaver@aklaver.com >> -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: