Вставить несколько строк для одного и того же значения — SQL

Как я могу вставить более одной строки для одного и того же значения
например, каждый пользователь должен отправить 2 формы, поэтому имя пользователя в каждой форме одинаково, но информация отличается

Я попытался использовать UPDATE, но он удаляет информацию ole и заменяет ее новой, пока я хочу сохранить оба

Есть способ сделать это?

0

Решение

Иметь две таблицы: «ПОЛЬЗОВАТЕЛИ» и «ФОРМУЛИРОВАНИЕ»

Когда пользователь отправляет форму в первый раз, в таблице USERS создается новая запись, которая является уникальной для каждого пользователя и будет содержать информацию, связанную с пользователем.

И всякий раз, когда форма отправляется (включая первый раз), запись записывается в таблицу FORMSUBMISSIONS с подробной информацией об этом представлении и внешним ключом обратно к ПОЛЬЗОВАТЕЛЯМ.

Это более чистая модель данных для этой ситуации. Это также поможет будущим запросам к данным. Если по какой-то причине вы ограничены одной таблицей, то последовательные вставки будут работать, как указано выше, если в поле USER нет уникального ключа.

0

Другие решения

insert into your_table (username, col2)
values ('user1', 1),
('user1', 2)
3

Вы можете добавить дубликаты данных, только ваш первичный ключ не может быть дублирован, потому что это вызывает ограничение первичного ключа. так что вы можете создать дополнительный столбец, скажем, «ID», сделать его вашим основным ключом. При отправке строки продолжайте добавлять значение столбца ID по одному, остальные данные могут быть одинаковыми.

0

Это зависит от того, допускает ли ваш столбец USERNAME дубликаты.

Если это первичный ключ таблицы, ваша схема таблицы не поддерживает то, что вы хотите сделать, потому что PK должен быть УНИКАЛЬНЫМ.

Если ваш столбец USERNAME допускает дублирование, вы можете использовать INSERT:

 declare @username varchar(max) = 'your_username' --declare a variable to use the same username

insert into table_name (username, form_data)
values(@username, 'form_data_1')
,(@username, 'form_data_2')

Это также зависит от того, как вы выполняете оператор SQL. Я определенно пошел бы и создал хранимую процедуру, чтобы сделать эту вставку.

0

Вы можете использовать массовый запрос вставки для этого. как предложено @huergen, но убедитесь, что у вашего имени пользователя или любого поля, которое может быть в данных формы, нет уникального индекса ключа. Вы также можете добавить другое поле, которое работает как ключ PRIMARY в этой таблице. Есть много способов сделать это, но это зависит от ваших требований.

0

Используйте приведенный ниже формат для получения желаемого результата:

insert into Table_name(Field1, Field2)
SELECT 'user_1', 1 UNION ALL
SELECT 'user_1', 2
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector