2014-01-25 3 views
0

Более общий вопрос о MySQL. Мне было интересно, сколько проверок можно/нужно делать непосредственно на уровне SQL. Например, я создаю форум, на котором администраторы могут размещать листы. В настоящее время при отправке сообщения PHP проверяет сеанс пользователя, чтобы узнать, является ли этот пользователь администратором. Мой вопрос: был ли бы способ сделать запрос INSERT, только вставляющий новую тему в качестве липкой (stick = true), если user_is_admin под user_id пользователя, пытающегося в настоящее время отправить сообщение, верно? Было бы возможно/желательно сделать это?MySQL проверяет перед вставками

+1

Лучший опыт пользователей программного обеспечения не дает выбора пользователям, которым не разрешено делать эти выборы. –

+0

Конечно. Вот почему не администратор даже не видит эти параметры. –

+0

Вы можете передавать пользовательскую информацию в свою базу данных в качестве параметра и выполнять логику там. Лично я предпочитаю выполнять свою логику в своем коде приложения. –

ответ

1

Чтобы ответить на часть 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 для вы и т. д., поэтому нежелательно.

Смежные вопросы