Chcę dodać wiersz do tabeli bazy danych, ale jeśli istnieje wiersz z tym samym unikalnym kluczem, chcę go zaktualizować. Na przykład: insert into table (id, name, age) values(1, "A", 19) Powiedzmy, że unikalny klucz to id, aw mojej bazie danych jest wiersz z id = 1. W takim przypadku chcę …
Kilka miesięcy temu nauczyłem się z odpowiedzi na temat przepełnienia stosu, jak wykonywać wiele aktualizacji jednocześnie w MySQL przy użyciu następującej składni: INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z) ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2); Teraz przełączyłem się na PostgreSQL i …
Załóżmy strukturę tabeli MyTable(KEY, datafield1, datafield2...). Często chcę zaktualizować istniejący rekord lub wstawić nowy, jeśli nie istnieje. Głównie: IF (key exists) run update command ELSE run insert command Jak najlepiej to napisać?
http://en.wikipedia.org/wiki/Upsert Wstaw aktualizację przechowywaną proc na SQL Server Czy jest jakiś sprytny sposób na zrobienie tego w SQLite, o którym nie myślałem? Zasadniczo chcę zaktualizować trzy z czterech kolumn, jeśli rekord istnieje, jeśli nie istnieje, chcę WSTAWić rekord z wartością domyślną (NUL) dla czwartej kolumny. Identyfikator jest kluczem podstawowym, więc …
Używam Pythona do pisania w bazie danych Postgres: sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES (" sql_string += hundred + ", '" + hundred_slug + "', " + status + ");" cursor.execute(sql_string) Ale ponieważ niektóre z moich wierszy są identyczne, pojawia się następujący błąd: psycopg2.IntegrityError: duplicate key value violates unique …
Operacja UPSERT aktualizuje lub wstawia wiersz do tabeli, w zależności od tego, czy tabela ma już wiersz zgodny z danymi: if table t has a row exists that has key X: update t set mystuff... where mykey=X else insert into t mystuff... Ponieważ Oracle nie ma określonej instrukcji UPSERT, jaki …
Bardzo często zadawanym pytaniem jest tutaj, jak zrobić upsert, czyli to, co wywołuje MySQL, INSERT ... ON DUPLICATE UPDATEa standardowe obsługuje jako częśćMERGE operacji. Biorąc pod uwagę, że PostgreSQL nie obsługuje go bezpośrednio (przed pg 9.5), jak to zrobić? Rozważ następujące: CREATE TABLE testtable ( id integer PRIMARY KEY, somedata …
Mam następujący UPSERT w PostgreSQL 9.5: INSERT INTO chats ("user", "contact", "name") VALUES ($1, $2, $3), ($2, $1, NULL) ON CONFLICT("user", "contact") DO NOTHING RETURNING id; Jeśli nie ma konfliktów, zwraca coś takiego: ---------- | id | ---------- 1 | 50 | ---------- 2 | 51 | ---------- Ale jeśli …
Kiedy dodajesz wiersz (PostgreSQL> = 9.5) i chcesz, aby możliwe INSERT było dokładnie takie samo, jak możliwe UPDATE, możesz napisać to w ten sposób: INSERT INTO tablename (id, username, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com') ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id, username=EXCLUDED.username, password=EXCLUDED.password, level=EXCLUDED.level,email=EXCLUDED.email Czy istnieje …
Napisałem przechowywany proces, który dokona aktualizacji, jeśli istnieje rekord, w przeciwnym razie dokona wstawienia. Wygląda mniej więcej tak: update myTable set Col1=@col1, Col2=@col2 where ID=@ID if @@rowcount = 0 insert into myTable (Col1, Col2) values (@col1, @col2) Moja logika stojąca za pisaniem tego w ten sposób jest taka, że aktualizacja …
Muszę wykonać UPSERT / INSERT LUB UPDATE w bazie danych SQLite. Istnieje polecenie WSTAW LUB ZAMIEŃ, które w wielu przypadkach może być przydatne. Ale jeśli chcesz zachować swój identyfikator z autoincrement na miejscu z powodu kluczy obcych, to nie działa, ponieważ usuwa wiersz, tworzy nowy, aw konsekwencji nowy wiersz ma …
Mam dwie kolumny w tabeli col1, col2obie są niepowtarzalnie indeksowane (col1 jest unikalny, podobnie jak col2). Muszę wstawić do tej tabeli, użyć ON CONFLICTskładni i zaktualizować inne kolumny, ale nie mogę użyć obu kolumn w conflict_targetklauzuli. To działa: INSERT INTO table ... ON CONFLICT ( col1 ) DO UPDATE SET …
MySQL ma coś takiego: INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1; O ile wiem, ta funkcja nie istnieje w SQLite, chciałbym wiedzieć, czy istnieje sposób na osiągnięcie tego samego efektu bez konieczności wykonywania dwóch zapytań. Jeśli nie jest to możliwe, …
Mam następującą tabelę liczników: CREATE TABLE cache ( key text PRIMARY KEY, generation int ); Chciałbym zwiększyć jeden z liczników lub ustawić go na zero, jeśli odpowiedni wiersz jeszcze nie istnieje. Czy można to zrobić bez problemów ze współbieżnością w standardowym języku SQL? Operacja jest czasami częścią transakcji, czasami oddzielną. …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.