Более общий вопрос о MySQL. Мне было интересно, сколько проверок можно/нужно делать непосредственно на уровне SQL. Например, я создаю форум, на котором администраторы могут размещать листы. В настоящее время при отправке сообщения PHP проверяет сеанс пользователя, чтобы узнать, является ли этот пользователь администратором. Мой вопрос: был ли бы способ сделать запрос INSERT, только вставляющий новую тему в качестве липкой (stick = true), если user_is_admin под user_id пользователя, пытающегося в настоящее время отправить сообщение, верно? Было бы возможно/желательно сделать это?MySQL проверяет перед вставками
ответ
Чтобы ответить на часть 1 вашего вопроса (возможно ли это?), Да, это возможно.
MySQL имеет функцию IF, которая может использоваться в операциях INSERT и UPDATE для установки значения столбца в зависимости от других факторов в пределах объема инструкции.
Синтаксис IF (expr, if_true_expr, if_false_expr), поэтому он немного похож на тройной оператор в PHP, C, Java и т. Д. См. http://www.mysqltutorial.org/mysql-if-function.aspx.
Что касается желаемого, то это явно зависит от общего контекста, но в целом с использованием специфического для поставщика SQL делает ваше приложение менее портативным. Кроме того, логика разделяется между PHP и SQL, поэтому ее можно менее легко понять и реорганизовать, изменения в структуре БД нарушают код SQL, вы с меньшей вероятностью реализуете преимущества использования фреймворков MVC, которые обрабатывают уровень SQL для вы и т. д., поэтому нежелательно.
- 1. Обрезать пробелы перед вставками базы данных
- 2. MySQL вложенные запросы со вставками
- 3. Форма проверяет перед отправкой
- 4. Hapijs проверяет параметры перед аутентификацией
- 5. EditTextPreference проверяет данные перед сохранением
- 6. MySQL избегает дублирования данных со вставками
- 7. MySQL WorkBench со вставками из внешнего источника
- 8. Откат транзакции, если выполняется определенное условие, перед вставками
- 9. Yii проверяет CActiveForm dropDownList перед сфокусировкой
- 10. Entity Framework проверяет текущее значение перед обновлением
- 11. Модуль MVQ moq проверяет объект перед RedirecToAction()
- 12. Kendo treelist проверяет перед вставкой операции
- 13. Проверяет перед переименованием элемент в приложении Eclipse
- 14. NodeJS проверяет выполнение функции перед продолжением
- 15. Python argparse проверяет выбор перед типом
- 16. проверяет нарушение ограничений перед сохранением объекта
- 17. PHP проверяет форму перед отправкой на «действие»
- 18. Gridview проверяет все строки перед обновлением
- 19. SQLXMLBULKLOAD XSD проверяет значение элемента перед загрузкой
- 20. Контактная форма не проверяет поля перед отправкой
- 21. MongoDB проверяет коллекцию перед ее созданием
- 22. PHP MYSQL проверяет дублируемую запись
- 23. Как MYSQL проверяет пароль MD5
- 24. Вложенные запросы со вставками
- 25. Использование getGeneratedKeys с пакетными вставками в MySQL с коннектором/J
- 26. Являются ли mysql несколькими вставками в одном атоме запроса?
- 27. Разбиение MySQL для таблицы с огромными вставками и удалениями
- 28. MySQL: несколько фотографий и видеоролики для новостей со вставками
- 29. JDBC всегда проверяет последнюю строку таблицы MySQL?
- 30. cassandra производительность и скорость с несколькими вставками?
Лучший опыт пользователей программного обеспечения не дает выбора пользователям, которым не разрешено делать эти выборы. –
Конечно. Вот почему не администратор даже не видит эти параметры. –
Вы можете передавать пользовательскую информацию в свою базу данных в качестве параметра и выполнять логику там. Лично я предпочитаю выполнять свою логику в своем коде приложения. –