|
автор: вопрос_MYSQL (14.10.2004 в 23:35) |
|
| Есть таблица с несколькими полями одно из них auto_increment
а как делается так чтобы при добавлении/изменении новой записи ее значение увеличивалось на 1(это не поле auto_increment а другое) и можно ли чтобы отсчет был не с 0 а скажем с любого числа?
Конкретно вот поля:
id_page auto_increment
name
rubrika
id_rubrika
n_rubrika
Таблица заполнена
но в ней изменяются rubrika и при изменении нужно чтоб значение поля n_rubrika увеличивалось на еденицу, т.е. изменили первую запись (поле rubrika ) значение поля n_rubrika стало 1 , изменили другую запись (поле rubrika ) значение поля n_rubrika стало 2 и т.д. | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(14.10.2004 в 23:35)
| | Хм... а поле rubrika изменяется оператором UPDATE? Если так, то увеличивать значение n_rubrika можно таким образом:
UPDATE table SET rubrika='new text ...', n_rubrika = n_rubrika + 1
WHERE id_page = 4;
|
| |
|
|
|
|
автор: вопрос_MYSQL (14.10.2004 в 23:54) |
|
|
для: cheops
(14.10.2004 в 23:43)
| | точно!
Спасибо все оч. просто оказывается. | |
|
|
|
|
автор: вопрос_MYSQL (14.10.2004 в 23:59) |
|
|
для: вопрос_MYSQL
(14.10.2004 в 23:54)
| | что то не совсем получилось при изменение второй записи значение n_rubrika становиться также 1 | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(14.10.2004 в 23:59)
| | Хм... создал таблицу аналогичную вашей - у меня работает...
PS Если вы копируете запрос из браузера - следите чтобы id_page принимал реальные значения, если у вас не будет записи с id_page = 4 изменений не произойдёт. | |
|
|
|
|
автор: вопрос_MYSQL (15.10.2004 в 00:03) |
|
|
для: cheops
(14.10.2004 в 23:43)
| | А при изменении этой же записи значение увеличивается на единицу.
А нужно чтоб у каждой записи значение n_rubrika было уникикально 1 2 3 4 5 ...
а что больше нельзя редактировать свои сообщения??? | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 00:03)
| | Погодите-ка я чего-то немного запутался :))) Нужно чтобы значение n_rubrika было просто уникально или чтобы оно увеличивалось на единицу при каждом исправлении записи? | |
|
|
|
|
автор: вопрос_MYSQL (15.10.2004 в 00:16) |
|
|
для: cheops
(15.10.2004 в 00:11)
| | нужно чтобы оно было уникальное для каждой записи ну соответственно увеличивалось на единицу для записи которую узменили потом | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 00:16)
| | >увеличивалось на единицу для записи которую
>узменили потом
Так уникальность не сохранится... так как после добавляя записи
45
46
47
и изменяя изменяя запись 46 получим две записи с номером 47. Увеличение на единицу это требование того, чтобы изменённая запись была дургой? Тогда порядок действий должен быть следующим.
1) Уничтожить поле n_rubrika.
2) Нужно снять атрибут auto_increment с id_page.
3) Создать поле n_rubrika с атрибутом auto_increment - так мы получим уникальные значения для уже существующих записей.
4) Вернуть атрибут auto_increment для поля id_page
5) При создании новой записи присваивать n_rubrika значение равное максимальному значению n_rubrika + 1
INSERT INTO table VALUES(0,'$name', '$rubrika', $id_rubrika, MAX(n_rubrika)+1)
|
6) При изменении записи, не просто увеличивать на единицу поле n_rubrika, а увеличивать максимальное значение для этого столбца
UPDATE table SET rubrika='new text ...', n_rubrika = MAX(n_rubrika) + 1
WHERE id_page = 4;
|
| |
|
|
|
|
|
|
|
для: cheops
(15.10.2004 в 00:43)
| | А может лучше тогда
1 Определить максимальное значение поля n_rubrika
и изменяемой записи присвоить значение поля n_rubrika максимальное значение поля n_rubrika +1 | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 01:06)
| | Ну... если n_rubrika априори уникально, то можно и так. | |
|
|
|
|
|
|
|
для: cheops
(15.10.2004 в 01:11)
| |
UPDATE table SET rubrika='new text ...', n_rubrika = MAX(n_rubrika) + 1
WHERE id_page = 4;
|
что то не срабатывает этот код
n_rubrika = MAX(n_rubrika) + 1 это значит что значение записи поля n_rubrika будет увеличено на максимальное значение которое есть в поле n_rubrika на единицу ? | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 01:27)
| | Хм... да помню какая-то закавыка была... тогда придётся использовать два запроса - сначала узнавать максимальное значение, увеличивать на единицу, а потом подставлять полученное значение во второй запрос. | |
|
|
|
|
|
|
|
для: cheops
(15.10.2004 в 01:38)
| |
$sql = mysql_query("SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages ;");
$spisok = mysql_query("
UPDATE pages SET rubrika='".$rubrika."', id_rubrika='12', n_rubrika = '".$sql."'+1 WHERE name='".$URL."'
;" );
|
что то этот код не работает
этот запрос:
SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages
находит максимальное значение n_rubrika но почему то это значение не переходит переменной $sql
деалаю echo $sql ;
выводит
.Resource id #12. | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 01:52)
| | Мне кажеца вам нужно зделать вот так
$sql = "SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages";
$spisok = mysql_query("
UPDATE pages SET rubrika='".$rubrika."', id_rubrika='12', n_rubrika = '".$sql."'+1 WHERE name='".$URL."' " );
|
А у вас ошибка то что вы в конце каждого запроса ставети точку с запятой
mysql_query("SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages ;");
|
а нада
mysql_query("SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages");
|
Потому что когда пишете код в ПХП то он кагбы автоматически закрывает запрос | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 01:52)
| | $sql - это дескриптор результата, с помощью его следует получить результат, например при помощи функции mysql_result():
<?php
$sql = mysql_query("SELECT MAX( n_rubrika ) AS n_rubrika
FROM pages ;");
$num = mysql_result($sql, 0);
$num++;
$spisok = mysql_query("
UPDATE pages SET rubrika='".$rubrika."', id_rubrika='12', n_rubrika = '".$num." WHERE name='".$URL."'
;" ); ?>
|
http://www.softtime.ru/dic/id_dic=127&id_group=2 | |
|
|
|
|
|
|
|
для: cheops
(15.10.2004 в 09:30)
| | так все заработало а вот есть вопрос
Генерирование последовательность без атрибута auto_increment а спомощью функции LAST_INSERT_ID() c аргументом (в MYSQL c версии 3,22,9)
пример :
UPDATE name_table SET ident = LAST_INSERT_ID (ident +1);
SELECT LAST_INSERT_ID() ;
функцию LAST_INSERT_ID() в моем примере можно применить? | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 15:57)
| | Хм... можно поробовать, я если честно не пробовал этой функцией пользоваться, так как часто прибегаю к многострочной вставке, когда она не применима. | |
|
|
|
|
|
|
|
для: вопрос_MYSQL
(15.10.2004 в 00:03)
| | >а что больше нельзя редактировать свои сообщения???
Редактирование свои сообщений доступно зарегистрированным пользователям. | |
|
|
|