Обновить таблицу ТОЛЬКО, когда конкретные значения еще не содержатся ни в одной строке таблицы

Использование Ramda,

npm установка ramda

import R from 'ramda'
var objs = [ 
    { first_nom: 'Lazslo', last_nom: 'Jamf'     },
    { first_nom: 'Pig',    last_nom: 'Bodine'   },
    { first_nom: 'Pirate', last_nom: 'Prentice' }
];
var ascendingSortedObjs = R.sortBy(R.prop('last_nom'), objs)
var descendingSortedObjs = R.reverse(ascendingSortedObjs)
1
задан Gordon Linoff 13 July 2018 в 20:57
поделиться

2 ответа

Вы забыли скобку

SELECT * 
  FROM categories
 WHERE (cat_title = '$category_title' OR cat_price = '$category_price' OR cat_limit = '$category_limit')
   AND cat_id != '$id'

Теперь все условия OR будут оцениваться вместе, поскольку условие AND будет преобладать.

2
ответ дан Felippe Duarte 17 August 2018 в 12:09
поделиться
  • 1
    Спасибо, но я пробовал это и все еще получаю такие же результаты. Даже когда пользователь ничего не меняет и попадает в submit, он возвращает одно и то же сообщение. Или я что-то пропустил? – Ofori Kingsford 13 July 2018 в 21:10
  • 2
    Запрос сравнивает название, цену и лимит. Вам действительно нужно сравнить все эти столбцы или просто заголовок? – Felippe Duarte 13 July 2018 в 21:12
  • 3
    Я сравниваю все 3 столбца – Ofori Kingsford 13 July 2018 в 21:18
  • 4
    Хорошо, теперь это сработало. Я просто не заметил положения закрывающей круглой скобки в вашем ответе. благодаря – Ofori Kingsford 13 July 2018 в 23:34

Я думаю, вы просто хотите уникальные ограничения / индексы. Вы можете создать их как:

create unique index unq_categories_title on categories(title);
create unique index unq_categories_price on categories(price);

База данных обеспечит проверку целостности данных, не позволяя новым строкам или обновленным строкам повторять значения в этих столбцах.

Это, как правило, гораздо лучший подход, чем использование логики приложения. Например, два пользователя могут вставить одну и ту же строку примерно в одно и то же время - когда проверка находится в приложении. С ограничением базы данных база данных гарантирует уникальность.

1
ответ дан Gordon Linoff 17 August 2018 в 12:09
поделиться
  • 1
    Хороший совет. Тем не менее, выдает пользователю ошибку. OP должен сделать это, чтобы избежать несогласованности базы данных и улучшить запрос, чтобы показать ошибку пользователю. – Felippe Duarte 13 July 2018 в 21:00
  • 2
    Хорошо, Гордон, я полагаю, после создания уникальных индексов мне не нужно делать проверку перед обновлением? – Ofori Kingsford 13 July 2018 в 21:25
  • 3
    @OforiKingsford. , , Нет, ты не. Вы можете проверить, не сработали ли insert или update. – Gordon Linoff 14 July 2018 в 02:06
Другие вопросы по тегам:

Похожие вопросы: