|
|
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
Добрый день, вопрос! Есть полностью рабочаю программа каторая раз в пол часа обновляет базу! в базе допустим 100 строк так вот всё класс работает(ЗАЛИЛОСЬ 100 строк с id 1 - 100) но при новом обновление id становятся 101-201 итд так вот друзья как сделать что бы УДАЛЯЛИСЬ и id что бы всегда были 1 - 100 вот мой запрос $queryDel= "DELETE LOW_PRIORITY FROM sales WHERE sales.uniq='".$uniq."'"; mysql_query($queryDel); моя таблица mysql_query("CREATE TABLE IF NOT EXISTS `sales` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `segment` int(11) NOT NULL, FOREIGN KEY (segment) REFERENCES segment (id), `tt` int(11) NOT NULL, FOREIGN KEY (tt) REFERENCES tt (id), `uniq` varchar(255) NOT NULL, `tmc` int(11) NOT NULL , FOREIGN KEY (tmc) REFERENCES tmc (id), `region` int(11) NOT NULL , FOREIGN KEY (region) REFERENCES region (id), `date` DATETIME NOT NULL, `delivery` DATETIME NOT NULL, `q` int(11) NOT NULL, `s` float(11) NOT NULL , `kg` float(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8" ); шото читал про "OPTIMIZE TABLE sales"; ну чёто не получается! помогите ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 18:27:53 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
Просто дропай таблицу и создавай заново. Вот и будет тебе щастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 18:36:31 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
елки палки!!!! там же написано условии..... Ну повторю что удаляется часть а не вся!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 18:42:52 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
Вариантов "сбросить" счетчик автоинкремента всего два: 1) Пересоздать таблицу (при необходимости перелив в нее данные) 2) Рестартовать сервис MySQL. При старте InnoDB ищет максимальный id в таблице и дальше наращивает его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 19:24:02 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986там же написано условии..... Ну повторю что удаляется часть а не вся!!!! ГДЕ??? мы точно одну и ту же тему читаем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 19:26:14 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
miksoftвсего дваесть третий, для любителей стрелять себе в ногу: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 06:44:28 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
На самом деле реальные значения id тебя не должны беспокоить, тебе должно быть все равно по логике работы в бд, какие у тебя значения первичного ключа. Они только должны быть уникальными. Если тебе не все равно, значит ты что-то не так делаешь, лучше это как можно быстрее исправить. Например, если тебе нужен какой то идущий подряд номер записей, его лучше явно создать (ещё одно поле помимо pk) и использовать только для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 07:47:46 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
MasterZivНа самом деле реальные значения id тебя не должны беспокоить, тебе должно быть все равно по логике работы в бд, какие у тебя значения первичного ключа. Они только должны быть уникальными. Если тебе не все равно, значит ты что-то не так делаешь, лучше это как можно быстрее исправить. Например, если тебе нужен какой то идущий подряд номер записей, его лучше явно создать (ещё одно поле помимо pk) и использовать только для этого. Попробую обьяснить точней что мне нужно!!!!! значить есть два файла ПХП! 1. это индекс где открывается ВЫГРУЖЕНИЙ С 1с CSV файл минимум на 1 000 000 строк! и цыклом переберается! 2. это сам файл функций и запросов ДЛЯ ПЕРЕБОРА ЭТОГО ФАЙЛА, для создание нужных таблиц,отсев нужных значений итд! До пустим мы запускаем файл 1 раз он долго работает создаёт бд ,таблицы , заносить из файла данные ,отсьеевыет не нужные(НАША ЛОГИКА) ....... все создал - отроботал на 100% ТАК ВОТ когда он запуститься 2 раз - не надо что бы обновлялась все база а обнвлялись телько те строки каторые нам нужны! МЫ ДОБИЛИСЬ ЭТОГО УСЛОВИЯМИЕ ИТД..... работает нормально! вопрос вот в чем добустим есть файл на 100 строк --->надо обновить последние 50 строк! у нас там IF логику решают! он меняет но получается первые id 1 - 50 а вторые вместо 51 - 100 уже как бы 101-150 ДОБУСТИМ ОПЯТЬ ПОМЕНЯЛИ ПОСЛЕДНИЕ 50 первые 1- 50 а вторые 151 -200 а хочется что бы после удаление строк КАКТО ЖЖАЛАСЬ ТАБЛИЦА а потом проинсертила.... если чё пишите пытался обьяснить по максимуму! сам запрос $queryDel= "DELETE LOW_PRIORITY FROM sales WHERE sales.uniq='".$uniq."'"; mysql_query($queryDel); таблица mysql_query("CREATE TABLE IF NOT EXISTS `sales` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), `segment` int(11) NOT NULL, FOREIGN KEY (segment) REFERENCES segment (id), `tt` int(11) NOT NULL, FOREIGN KEY (tt) REFERENCES tt (id), `uniq` varchar(255) NOT NULL, `tmc` int(11) NOT NULL , FOREIGN KEY (tmc) REFERENCES tmc (id), `region` int(11) NOT NULL , FOREIGN KEY (region) REFERENCES region (id), `date` DATETIME NOT NULL, `delivery` DATETIME NOT NULL, `q` int(11) NOT NULL, `s` float(11) NOT NULL , `kg` float(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8" ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:26:15 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
MasterZivНа самом деле реальные значения id тебя не должны беспокоить, тебе должно быть все равно по логике работы в бд, какие у тебя значения первичного ключа. Они только должны быть уникальными. Если тебе не все равно, значит ты что-то не так делаешь, лучше это как можно быстрее исправить. Например, если тебе нужен какой то идущий подряд номер записей, его лучше явно создать (ещё одно поле помимо pk) и использовать только для этого. мне они тупо не нужны!!!! ну это будет огромная база откуда будут братся значение и будет типо сайт с еще одной базой куда будут лететь значение для построение графиков и я ПОКА ДУМАЮ что оно может мне пригодиться для удобной выборке сам еще хз!!! Да и показалась вроде банальная задача перезаписавать в бд вместе с ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:28:30 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
tanglirmiksoftвсего дваесть третий, для любителей стрелять себе в ногу: Код: sql 1. Ну не так уж и в ногу... http://dev.mysql.com/doc/refman/5.5/en/alter-table.html You cannot reset the counter to a value less than or equal to any that have already been used. For MyISAM, if the value is less than or equal to the maximum value currently in the AUTO_INCREMENT column, the value is reset to the current maximum plus one. For InnoDB, if the value is less than the current maximum value in the column, no error occurs and the current sequence value is not changed.Стоит обратить внимание на комментарий там же: Posted by Bill Vogel on May 27 2010 11:59pmIf you use "ALTER TABLE mytable AUTO_INCREMENT = N" the MySQL server will create a new table, copy all the data from the old table to the new, delete the old and then rename the new one even though there is no structural change to the table. The server response will show that all the rows have been "affected", like this: mysql> alter table mytable auto_increment=1000000; Query OK, 512691 rows affected (1 min 4.55 sec) Records: 512691 Duplicates: 0 Warnings: 0 There are potential issues that may arise from the table copy, especially if you didn't expect it! I.e. is there a sufficient amount of free disk space for the second copy of the data, etc., etc.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:29:33 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986а хочется что бы после удаление строк КАКТО ЖЖАЛАСЬ ТАБЛИЦА а потом проинсертила.... если чё пишите пытался обьяснить по максимуму!Нельзя ли как-то менее косноязычно объясняться? Причем тут жало? И причем тут файлы ПХП? Если у вас таблица не очищается полностью, то есть еще, как минимум, два варианта: 1) Запоминать где-то вовне таблицы id последней обработанной записи. И следующий сеанс обработки начинать со следующей записи. Этот вариант годится только если вас устроит обработка записей в порядке вставки. 2) Завести в таблице дополнительное поле с флагом. По умолчанию туда будет записываться, например, 0. А по мере обработки будете менять там значение на 1. Если обработка будет в несколько потоков, то нужно будет предусмотреть соответствующую блокировку записей, но лучше обработку вести в один поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:38:37 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986 , чёта ты пургу несёшь. Ладно, создал ты структуру и залил туда отобранные тобой данные. При этом автоинкремент получил некоторые значения. Что примечательно, связь между его значением и значениями остальных полей таблицы при этом напрочь отсутствует, если ты именно используешь автоинкремент, а не явное присвоение значения. Рассказывать сказки про порядок обработки и записи в таблицу не надо - количество строк не фиксировано. Далее - ты выполняешь повторную обработку обновлённых данных. Допустим, решён вопрос с тем, что не надо создавать структуру, мы заливаем в существующую. Допустим, даже решён вопрос с тем, что выполняется прямое присвоение значения ID. А теперь расскажи, как ты будешь решать две проблемы. Проблема номер один. Ты пытаешься удалить запись с ID=20, чтобы потом на её место записать новую запись с ID=20. Сервер тебе отвечает - иди в баню, у меня есть на эту запись внешняя ссылка, рушить целостность данных не позволю. Твои действия? Проблема номер два. ТЫ удалил-таки запись с ID=20, и на её место записал новую запись с ID=20. Но вот незадача - раньше там были колёсные диски для КАМАЗА, а теперь, поскольку в начале добавлено ещё пара записей, в эту позицию попали диски для Запорожца. Твои действия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:42:30 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
miksoftimmortal1986а хочется что бы после удаление строк КАКТО ЖЖАЛАСЬ ТАБЛИЦА а потом проинсертила.... если чё пишите пытался обьяснить по максимуму!Нельзя ли как-то менее косноязычно объясняться? Причем тут жало? И причем тут файлы ПХП? Если у вас таблица не очищается полностью, то есть еще, как минимум, два варианта: 1) Запоминать где-то вовне таблицы id последней обработанной записи. И следующий сеанс обработки начинать со следующей записи. Этот вариант годится только если вас устроит обработка записей в порядке вставки. 2) Завести в таблице дополнительное поле с флагом. По умолчанию туда будет записываться, например, 0. А по мере обработки будете менять там значение на 1. Если обработка будет в несколько потоков, то нужно будет предусмотреть соответствующую блокировку записей, но лучше обработку вести в один поток. Жало - это сжало таблицу! ПХП это для ясности описуемого! как вообще можно реализовать 1 вариант без понятие где и как оно будет знать какой последний айди и как сравнить его!!!!! второй вопрос плз по подробней ..... ну слаб я в мускуле прошу дать дельный пинок в сторонуЁ ЛУЧШЕ УЖЕ НА МАНУАЛ ну не давайте ответы типо бери и удаляй id вместе с запросом!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:47:07 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
Akina immortal1986 , чёта ты пургу несёшь. Ладно, создал ты структуру и залил туда отобранные тобой данные. При этом автоинкремент получил некоторые значения. Что примечательно, связь между его значением и значениями остальных полей таблицы при этом напрочь отсутствует, если ты именно используешь автоинкремент, а не явное присвоение значения. Рассказывать сказки про порядок обработки и записи в таблицу не надо - количество строк не фиксировано. Далее - ты выполняешь повторную обработку обновлённых данных. Допустим, решён вопрос с тем, что не надо создавать структуру, мы заливаем в существующую. Допустим, даже решён вопрос с тем, что выполняется прямое присвоение значения ID. А теперь расскажи, как ты будешь решать две проблемы. Проблема номер один. Ты пытаешься удалить запись с ID=20, чтобы потом на её место записать новую запись с ID=20. Сервер тебе отвечает - иди в баню, у меня есть на эту запись внешняя ссылка, рушить целостность данных не позволю. Твои действия? Проблема номер два. ТЫ удалил-таки запись с ID=20, и на её место записал новую запись с ID=20. Но вот незадача - раньше там были колёсные диски для КАМАЗА, а теперь, поскольку в начале добавлено ещё пара записей, в эту позицию попали диски для Запорожца. Твои действия? БРАТ люблю тебя ай дишни не привязаны Так вот обновляем записи не по ID а по полю uniq (ЭТО знчение генерит 1с и оно всегда уникальное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:51:00 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986Akina immortal1986 , чёта ты пургу несёшь. Ладно, создал ты структуру и залил туда отобранные тобой данные. При этом автоинкремент получил некоторые значения. Что примечательно, связь между его значением и значениями остальных полей таблицы при этом напрочь отсутствует, если ты именно используешь автоинкремент, а не явное присвоение значения. Рассказывать сказки про порядок обработки и записи в таблицу не надо - количество строк не фиксировано. Далее - ты выполняешь повторную обработку обновлённых данных. Допустим, решён вопрос с тем, что не надо создавать структуру, мы заливаем в существующую. Допустим, даже решён вопрос с тем, что выполняется прямое присвоение значения ID. А теперь расскажи, как ты будешь решать две проблемы. Проблема номер один. Ты пытаешься удалить запись с ID=20, чтобы потом на её место записать новую запись с ID=20. Сервер тебе отвечает - иди в баню, у меня есть на эту запись внешняя ссылка, рушить целостность данных не позволю. Твои действия? Проблема номер два. ТЫ удалил-таки запись с ID=20, и на её место записал новую запись с ID=20. Но вот незадача - раньше там были колёсные диски для КАМАЗА, а теперь, поскольку в начале добавлено ещё пара записей, в эту позицию попали диски для Запорожца. Твои действия? $queryDel= "DELETE LOW_PRIORITY FROM sales WHERE sales.uniq='".$uniq."'"; БРАТ люблю тебя ай дишни не привязаны Так вот обновляем записи не по ID а по полю uniq (ЭТО знчение генерит 1с и оно всегда уникальное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:51:45 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
и еще просто id ЭТО не указатель на уникальность в моём случаи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:53:40 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986MasterZivНа самом деле реальные значения id тебя не должны беспокоить, тебе должно быть все равно по логике работы в бд, какие у тебя значения первичного ключа. Они только должны быть уникальными. Если тебе не все равно, значит ты что-то не так делаешь, лучше это как можно быстрее исправить. Например, если тебе нужен какой то идущий подряд номер записей, его лучше явно создать (ещё одно поле помимо pk) и использовать только для этого. мне они тупо не нужны!!!! ну это будет огромная база откуда будут братся значение и будет типо сайт с еще одной базой куда будут лететь значение для построение графиков и я ПОКА ДУМАЮ что оно может мне пригодиться для удобной выборке сам еще хз!!! Да и показалась вроде банальная задача перезаписавать в бд вместе с ID Если не нужны — то и плюнь, пока не станут нужны. Если все же нужны — либо добавляй поле специально для этого, либо с существующего поля снимай auto increment и заполняй его руками. Фиксить auto increment в продакшне по—любому неправильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 10:54:41 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986как вообще можно реализовать 1 вариант без понятие где и как оно будет знать какой последний айди и как сравнить его!!!!!Последний обработанный id можно запоминать где угодно, например, в файле. Или в специальной табличке, состоящей из одного поля и одной записи. Специальных механизмов для этого нет, можете использовать то, что знаете. immortal1986второй вопрос плз по подробней ..... ну слаб я в мускулеЭто тоже не какой-то механизм MySQL, это просто методика. Что именно непонятно? Вы не можете при создании таблицы добавить еще одно поле? immortal1986прошу дать дельный пинок в сторонуЁ ЛУЧШЕ УЖЕ НА МАНУАЛНа мануал по чему именно? Ссылку на мануал по ALTER TABLE я давал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:01:39 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
miksoftimmortal1986как вообще можно реализовать 1 вариант без понятие где и как оно будет знать какой последний айди и как сравнить его!!!!!Последний обработанный id можно запоминать где угодно, например, в файле. Или в специальной табличке, состоящей из одного поля и одной записи. Специальных механизмов для этого нет, можете использовать то, что знаете. immortal1986второй вопрос плз по подробней ..... ну слаб я в мускулеЭто тоже не какой-то механизм MySQL, это просто методика. Что именно непонятно? Вы не можете при создании таблицы добавить еще одно поле? immortal1986прошу дать дельный пинок в сторонуЁ ЛУЧШЕ УЖЕ НА МАНУАЛНа мануал по чему именно? Ссылку на мануал по ALTER TABLE я давал выше. люди TRANCATE слыхали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:07:09 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
Блин как тут редактировать а не цитировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:09:10 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986Блин как тут редактировать а не цитироватьНикак. Прежде чем опубликовать свой пост, нажмите кнопку "Просмотр", чтобы увидеть свой будущий пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:12:42 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986люди TRANCATE слыхали? http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html Только вам он ничем не поможет, так как удаляет все записи из таблицы, а не по условию. Хотя счетчик автоинкремента он сбросит, это да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:16:12 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
miksoftimmortal1986люди TRANCATE слыхали? http://dev.mysql.com/doc/refman/5.5/en/truncate-table.html Только вам он ничем не поможет, так как удаляет все записи из таблицы, а не по условию. Хотя счетчик автоинкремента он сбросит, это да. блин думал моё решение ,а да он збрасывают всё таблицу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:21:02 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986и еще просто id ЭТО не указатель на уникальность в моём случаи Если это поле-автоинкремент (а исходный пост однозначно на это указывает), то это первичный индекс. А если так, то эта твоя фраза - ложная. immortal1986ай дишни не привязаны Так вот обновляем записи не по ID а по полю uniq (ЭТО знчение генерит 1с и оно всегда уникальное) Тогда уникальный индекс на поле uniq, загрузка новых данных по INSERT ... ON DUPLICATE KEY UPDATE ... , и не морочь тут нам голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:22:35 |
|
||
|
DELETE id ?
|
|||
|---|---|---|---|
|
#18+
immortal1986, MasterZivЕсли не нужны — то и плюнь, пока не станут нужны.+1 Если у вас айдишники висят в таблице "просто так", то зачем, зачем вам нужно, чтобы они были от 1 до 100? Нумерация? Тогда MasterZivЕсли все же нужны — либо добавляй поле специально для этого, либо с существующего поля снимай auto increment и заполняй его руками., т.к. автоинкремент в принципе вовсе не для юзерской нумерации предназначен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2013, 11:24:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38488428&tid=1835606]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 332ms |

| 0 / 0 |
