Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поля integer и их значения
 
 автор: Maxam   (07.10.2012 в 21:01)   письмо автору
 
 

Привет всем.

Прошу вашей подсказки, пожалуйста.

Можно ли поставить полю в MySQL базе значение INT, которое должно иметь минимальное значение 1?

То есть
`peremennaya` int
могла иметь любые значения, но выше 1, и если попытаться записать 0 или отрицательное, то записалось бы минимум всё равно 1 только.

  Ответить  
 
 автор: Sfinks   (08.10.2012 в 09:04)   письмо автору
 
   для: Maxam   (07.10.2012 в 21:01)
 

Нет. Целочисленные типы изменяются либо от -n до +(n-1), либо от 0 до +(n*2-1) с атрибутом UNSIGNED.

Но то что вам нужно, можно реализовать с помощью триггера BEFORE INSERT если у пользователя БД есть привилегия TRIGGER.

  Ответить  
 
 автор: Valick   (08.10.2012 в 10:00)   письмо автору
 
   для: Sfinks   (08.10.2012 в 09:04)
 

Кстати а конструкцию IF в INSERT запхать не пробовали?
Мне кажется триггер достаточно "жестоко" для такой операции, проще РНР задействовать.
Просто у меня сейчас вообще нет времени заниматься программированием

  Ответить  
 
 автор: Sfinks   (08.10.2012 в 10:09)   письмо автору
 
   для: Valick   (08.10.2012 в 10:00)
 

If в insert'e - без проблем.
Просто речь идет об организации данных, т.е. чтоб было НЕЛЬЗЯ и точка.
Триггер - как раз подходит - раз написал и забыл (также как выбрал тип)
А в инсерт можно и забыть if вписать. А если ничего не забывать, то можно и на клиенте проверять.

  Ответить  
 
 автор: Maxam   (10.10.2012 в 01:47)   письмо автору
 
   для: Sfinks   (08.10.2012 в 09:04)
 

Почитат вот это. Если честно, ничего не понял. Можете показать на примере, о чём вы здесь говорите? :(

  Ответить  
 
 автор: Sfinks   (12.10.2012 в 08:24)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Maxam   (13.10.2012 в 00:31)   письмо автору
 
   для: Sfinks   (12.10.2012 в 08:24)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования