2013-05-17 3 views
0

Я разрабатываю небольшой скрипт с перетаскиваемыми блоками и сохраняю свои позиции в таблице MySQL. Но у меня есть небольшая проблема. Я не знаю, как написать SQL-запрос для удаления и добавления новых полей. Скажем, у нас есть таблица, подобная этой:Изменить все столбцы в mysql - Перетаскиваемые поля

----------------------------------- 
| id | position | title | 
----------------------------------- 
| 23 | 1  | something| 
| 24 | 2  | something| 
| 26 | 3  | sometging| 
| 32 | 4  | something| 
.............etc................... 
----------------------------------- 

ID ID для ящиков (уникальный номер для коробки). Позиция - это положение каждого поля в макете, а заголовок - это заголовок (простой) :) Я не знаю, как сделать запрос для добавления/удаления окна и изменить все строки в столбце «позиция» после этой новой или удаленной строки.

Скажите, что я хочу удалить поле с ID = 24. Ниже приведены таблицы после изменений:

----------------------------------- 
| id | position | title | 
----------------------------------- 
| 23 | 1  | something| 
| 26 | 2  | sometging| 
| 32 | 3  | something| 
.............etc................... 
----------------------------------- 

И это таблица, когда я добавляю новую коробку в таблицу. (новая коробка имеет ID = 10)

----------------------------------- 
| id | position | title | 
----------------------------------- 
| 10 | 1  | something| 
| 23 | 2  | something| 
| 24 | 3  | something| 
| 26 | 4  | sometging| 
| 32 | 5  | something| 
.............etc................... 
----------------------------------- 

Как написать запрос для добавления и удаления ящиков из таблицы?

P.S. Мой английский действительно плохой, я надеюсь, что вы поймете меня и дадите мне решение моей проблемы.

Приветствия

ответ

0

Я понимаю, что вы хотите обновить позиции при вставке или удалении строки. Я прав ?

Для этой цели вы можете использовать триггеры для выполнения обеих операций одновременно. Не все версии MySQL поддерживают триггеры, поэтому вам нужно будет проверить свою документацию по MySQL.

В противном случае вам придется использовать несколько запросов в вашем коде: по крайней мере один для обновления таблицы перед вставкой/удалением и один для вставки/удаления.

Ex: если 1 позиция для новой строки:

UPDATE my_tbl SET position = position + 1 where position >= 1 
INSERT INTO my_tbl (id, position, title) VALUES (10, 1, 'something') 

Или: если 2 является фактическим положением для удаленной строки:

UPDATE my_tbl SET position = position - 1 where position > 2 
DELETE FROM my_tbl where id = 24 

ИНЕКЯ будет зависеть от вашего спецификации, конечно.

НО: если таблица имеет уникальный индекс на поле позиции, более должно быть сделано, чтобы обработать consistenly данные ...

+0

Да, это то, что мне нужно ... Большое спасибо Herode –

0

это как этот брат 1. вставки в ящики (ID, должность, название) значения ('99' , '12', 'что-то'); 2. Вставить в значения полей ('99 ',' 12 ',' something '); 3. Если вы используете автоматическое увеличение, поданное для 'ID' , вставьте в поля (положение, название) значения ('12 ',' something '); db присвоит u новый идентификатор. вы будете лучше обратиться www.w3schools.com

Весело

+0

[это ужасный источник] (http://w3fools.com /) –

Смежные вопросы