Возможно ли создать колонку внутри которой только одна ячейка имеет права содержать в себе значение?
Всем привет.
Возможно ли в MySQLi создать колонку внутри таблицы, которая позволяет только одной ячейке(одной записи) содержать в себе значение.
Предположим в таблице имеется две колонки: id и status. В таблице имеется 3 записи с соответствующими id: 1, 2, 3. Но колонка status может содержать значение только для одной записи. Пока для 2-ой записи в колонке status что-то содержится(любое значение), для всех остальных записей это колонка не может содержать в себе ничего. Как только колонка status для 2-ой записи стала пустой, то появляется возможность что-то записать в колонку status для любой записи.
Думаю нет, хотя может быть какими-то внутренними механизмами это можно обойти, но зачем?
Навскидку есть пара способов:
1) Транзация на запись: стартует транзакцию -> проверяем, если в колонке нет значения -> записываем -> проверяем что она одна -> коммит/откат
2) Блокировать таблицу после внесения изменения
В mysqli нет никаких колонок вообще. Это API, набор функций PHP. Его используют самые необучаемые пхпшники, которых отлучили от mysql_query, и которые не сумели освоить ничего более прогрессивного.
Прогрессивные используют ORM, встроенный в фреймворк, с которым они работают. И их код выглядит так $user = User::find($id);
Те, кто пишут свой ORM, используют PDO.
А тормоза так и колупаются с mysql_query, истово следуя единственному осиленному учебнику, написанному в прошлом веке. А в mysqli видят просто замену этому убогому API, так каждый раз и колупаясь с query, while и fetch.