PostgreSQL

Підтримка PostgreSQL про конфлікт

Підтримка PostgreSQL про конфлікт
Вираз "Upsert" розпізнається як об'єднання в СУБД. "Upsert" корисно мати з PostgreSQL, якщо ви не хочете мати справу з унікальними помилками порушення обмежень через повторні записи. Коли ви запускаєте загальну команду UPDATE, необхідні коригування відбуватимуться лише в тому випадку, якщо запис відповідає стандартам команд; якщо таких даних не існує, то нічого не відбувається. Коли ви додаєте новий рядок до таблиці, PostgreSQL оновить рядок, якщо він існував раніше, або ж включить новий рядок, якщо рядок не існував. Ключове слово SQL "Upsert" поєднує слова "оновити" та "вставити".”Ця стаття показує, як працює функція PostgreSQL 'Upsert', а також як використовувати функцію 'Upsert' для додавання або оновлення інформації, якщо вставлений рядок вже існує в таблиці.

Синтаксис

Далі наведено синтаксис запиту 'Upsert' ON CONFLICT.

>> ВСТАВИТИ В Ім'я таблиці (список_столбців) VALUSE (список_значень) НА ЦІЛЬНУ ЦІЛЮ КОНФЛІКТ;

Запустіть оболонку командного рядка PostgreSQL

Для початку запустіть оболонку командного рядка PostgreSQL з меню Програма. Підключіть його до необхідного сервера. Введіть ім'я бази даних, над якою ви хочете працювати. Щоб працювати з іншим портом, введіть номер порту та ім’я користувача, з яким потрібно працювати. Щоб продовжити з параметрами за замовчуванням, залиште пробіли як є і натисніть "Enter" при кожному варіанті. Додайте пароль для вибраного імені користувача, і ваша командна оболонка повинна бути готова до використання.

Приклад 1:

Тепер ми можемо розпочати з конфліктом "Upsert". Припустимо, у вас є таблиця з назвою „особа” у вибраній базі даних із деякими полями, які відображають записи різних осіб. Ці записи показують імена людей, їх вік, їх міста та країни. Таблиця відображається нижче.

>> ВИБЕРІТЬ * ВІД людини;

Важливо знати, як може виникнути помилка або конфлікт. Поле таблиці 'id', яке також є первинним ключем, містить значення від 1 до 15. Коли користувач намагається вставити в таблицю кілька повторюваних записів, виникає конфлікт.

Давайте спробуємо наступний оператор INSERT, вставляючи записи до таблиці 'person'. Цей запит призведе до помилки, оскільки значення '3' поля 'id' вже існує в таблиці.

>> ВСТАВИТИ В ЛЮДИНУ (ідентифікатор, ім'я, вік, місто, країна) ЦІННОСТІ ('3', 'Habib', '45', 'Chakwal', 'Pakistan');

Приклад 2: Підкріплення реченням ON CONFLICT

Ми використовуватимемо речення ON CONFLICT, щоб уникнути запиту INSERT, який спричиняє цю помилку через вставлення повторюваних записів. Команда ON CONFLICT пропонує дві фрази з різним використанням.

Приклад 3: Вставте з реченням НІЧОГО

У цьому прикладі ми розглянемо речення DO NOTHING. Цей пункт уточнює, що жодна операція не буде виконана у разі помилки або конфлікту. Іншими словами, цей пункт дозволить лише уникнути конфліктів чи помилок.

Отже, давайте спробуємо ту саму команду INSERT, яку ми використовували раніше для додавання повторюваних записів до таблиці 'person', з доданими кількома змінами. Ми додали речення ON CONFLICT разом із твердженням DO NOTHING у цьому реченні. До унікального стовпця "id" застосовано речення ON CONFLICT. Це означає, що, коли користувач намагається вставити повторюване значення в стовпець 'id', він уникне конфлікту і нічого не зробить. Як ви можете бачити на зображенні нижче, він навіть не вставить новий запис у таблицю, а також не оновить попередній запис.

>> ВСТАВИТИ В особу (ідентифікатор, ім'я, вік, місто, країна) ЦІННОСТІ ('3', 'Хабіб', '45', 'Чаквал', 'Пакистан') ПРО КОНФЛІКТ (ідентифікатор) НІЧОГО НЕ;

Давайте перевіримо таблицю "людина" ще раз задля достовірності. Як ви можете бачити на зображенні нижче, в таблицю не внесено жодних змін.

>> ВИБЕРІТЬ * ВІД людини;

Приклад 2: Підтримка речення DO

Далі ми розглянемо речення ON CONFLICT та DO. Як вказує його назва, речення ___ буде виконувати дію при помилці або конфлікті, коли в таблицю буде вставлено повторюване значення. Ми будемо використовувати ту саму команду вставки, що і раніше, щоб вставити дублікат запису в таблицю "людина", з незначними змінами. Ми додали речення ON CONFLICT із реченням DO всередині нього. Коли користувач намагається вставити не унікальне значення в стовпець "id", він виконає дію, щоб уникнути конфлікту. Ми використовуємо речення UPDATE після речення DO, що вказує на оновлення даних у таблиці 'person'. Ключове слово SET використовується для встановлення значення стовпця "name" на нове значення, "Habib", використовуючи ключове слово EXCLUDED, де "id" становить "3" на поточний час. Якщо виконати наступний запит, ви побачите, що запит виконано.

>> ВСТАВИТИ В особу (ідентифікатор, ім'я, вік, місто, країна) ЦІННОСТІ ('3', 'Habib', '45', 'Chakwal', 'Pakistan') В КОНФЛІКТІ (id) ВСТАНОВИТИ ОНОВЛЕННЯ НАБОРУ name = ВИКЛЮЧЕНО.назва;

Щоб побачити зміни у вищезазначеному запиті, потрібно отримати записи таблиці „особа”. Якщо ви виконаєте наступний запит у оболонці командного рядка, ви побачите наступний результат.

>> ВИБЕРІТЬ * ВІД людини;

Як ви можете бачити з результатів нижче, ім'я людини оновлено до "Habib", де "id" - "3.'

Ви також можете оновити записи в декількох стовпцях, використовуючи ключове слово EXCLUDED у реченні ON CONFLICT запиту INSERT, як показано нижче.

>> ВСТАВИТИ В особу (ідентифікатор, ім'я, вік, місто, країна) ЦІННОСТІ ('3', 'Habib', '45', 'Chakwal', 'Pakistan') В КОНФЛІКТІ (id) ВСТАНОВИТИ ОНОВЛЕННЯ НАБОРУ name = ВИКЛЮЧЕНО.назва, місто = ВИКЛЮЧЕНО.місто;

Зміни показані нижче.

>> ВИБЕРІТЬ * ВІД людини;

Висновок

Ця стаття показала вам, як використовувати PostgreSQL 'Upsert' з реченням ON CONFLICT, поряд із діями DO і DO NOTHING. Прочитавши цю статтю, ми сподіваємось, вам буде простіше зрозуміти, як користуватися PostgreSQL 'Upsert.'

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...