|
|
|
| Привет всем.
Прошу вашей подсказки, пожалуйста.
Можно ли поставить полю в MySQL базе значение INT, которое должно иметь минимальное значение 1?
То есть
могла иметь любые значения, но выше 1, и если попытаться записать 0 или отрицательное, то записалось бы минимум всё равно 1 только. | |
|
|
|
|
|
|
|
для: Maxam
(07.10.2012 в 21:01)
| | Нет. Целочисленные типы изменяются либо от -n до +(n-1), либо от 0 до +(n*2-1) с атрибутом UNSIGNED.
Но то что вам нужно, можно реализовать с помощью триггера BEFORE INSERT если у пользователя БД есть привилегия TRIGGER. | |
|
|
|
|
|
|
|
для: Sfinks
(08.10.2012 в 09:04)
| | Кстати а конструкцию IF в INSERT запхать не пробовали?
Мне кажется триггер достаточно "жестоко" для такой операции, проще РНР задействовать.
Просто у меня сейчас вообще нет времени заниматься программированием | |
|
|
|
|
|
|
|
для: Valick
(08.10.2012 в 10:00)
| | If в insert'e - без проблем.
Просто речь идет об организации данных, т.е. чтоб было НЕЛЬЗЯ и точка.
Триггер - как раз подходит - раз написал и забыл (также как выбрал тип)
А в инсерт можно и забыть if вписать. А если ничего не забывать, то можно и на клиенте проверять. | |
|
|
|
|
|
|
|
для: Sfinks
(08.10.2012 в 09:04)
| | Почитат вот это. Если честно, ничего не понял. Можете показать на примере, о чём вы здесь говорите? :( | |
|
|
|
|
|
|
|
для: Maxam
(10.10.2012 в 01:47)
| | Допустим мы хотим, чтоб у таблицы tbl в поле fld нельзя было добавить число меньше 1....
Такой триггер можно установить такой командой:
DELIMITER //
CREATE TRIGGER `tblBeforeInsert` BEFORE INSERT ON `tbl`
FOR EACH ROW BEGIN
IF NEW.fld < 1 THEN
SET NEW.fld = 1;
END IF;
END//
DELIMITER ;
|
Аналогичным образом нужно позаботиться и о команде UPDATE | |
|
|
|
|
|
|
|
для: Sfinks
(12.10.2012 в 08:24)
| | Спасибо. | |
|
|
|