Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT так умеет? / 6 сообщений из 6, страница 1 из 1
18.03.2015, 11:17:26
    #38908025
lucky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
Здравствуйте!
В таблице есть поле col_1 AUTO_INCREMENT PRIMARY KEY, и есть еще некое поле col_2 INT, в которое в основном значения вставляются руками, а иногда нужно в него продублировать значение, которое будет создано автоинкрементом для колонки_1.
Может ли выполниться команда типа
Код: sql
1.
INSERT INTO tabl SET col_2 = col_1 


Ведь на момент запроса, строка еще не создана и sql вроде как еще не знает, чему равна col_1.
Как можно решить такую задачку?
...
Рейтинг: 0 / 0
18.03.2015, 11:39:12
    #38908059
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
lucky89,

insert into Table (field1,field2) values (Var1,Var1)

приводит к желаемому результату и ничего знать не потребуется. Вы же все равно что-то вставляете? Вообще операция, которую вы запрашиваете в какой-то мере реализована в MS SQL.
...
Рейтинг: 0 / 0
18.03.2015, 11:40:27
    #38908060
FAM
FAM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
lucky89,

и насчет автоинкремента - поставьте его на обоих полях с одинаковым стартовым значением. Тут совсем просто.
...
Рейтинг: 0 / 0
18.03.2015, 11:45:57
    #38908064
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
Если возникла такая надобность - сразу после вставки выполняйте UPDATE.
Либо вынесите логику вставки в процедуру.
...
Рейтинг: 0 / 0
18.03.2015, 12:20:04
    #38908157
lucky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
insert into Table (field1,field2) values (Var1,Var1)
Ну так не пойдет, я же сам не могу знать какое значение автоинкремента там на подходе. А оно очень важное, так как в будущем оно выступает, как идентификатор созданного пользователя во всех остальных таблицах. Тут пересечений нельзя допустить, а если это в начале проверять, то уже 2 запроса будет, + между этими запросами может зарегаться кто-то еще и опять конфликт.
сразу после вставки выполняйте UPDATE.
А вот так нормально, но это я и сам придумал) Опять 2 запроса получается. Одним выходит никак не обойтись?
Или оно того и не стоит, чтобы вообще задумываться об этом?
...
Рейтинг: 0 / 0
18.03.2015, 14:40:43
    #38908462
Близнец1980
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT так умеет?
lucky89Опять 2 запроса получается. Одним выходит никак не обойтись?
Или оно того и не стоит, чтобы вообще задумываться об этом?

Только если процедурой добавлять запись, а в ней типа того:

Код: plsql
1.
2.
3.
4.
5.
6.
INSERT INTO BA
            VALUES (NULL, 0);

UPDATE ba
      SET ba.ID_PART = LAST_INSERT_ID()
      WHERE ba.ID = LAST_INSERT_ID();
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT так умеет? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]