Дублирование нескольких записей одним оператором INSERT - PullRequest
1 голос
/ 26 мая 2020

В MS-Access 2019 я хотел бы дублировать существующие записи из tblTest и изменить одно поле tLink в качестве внешнего ключа для другой таблицы.

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

Итак, давайте предположим, что простая таблица tblTest, tID это Primary Key и auto-number

tID    tLink    tName
Long   Long     Text(50)
-----------------------------
1       3       Bill
2      17       Sue
3       9       Tom
4       3       Chris

Я хотел бы продублировать все записи с помощью tLink = 3 и установить их от tLink до 1.

Просматривая различные учебники, я узнал ...

INSERT INTO tblTest SELECT * FROM tblTest WHERE tID=1

... но это не удается из-за того, что tID должно быть уникальным значением.

Итак, я застрял на этом этапе, и удаление primary key из таблицы здесь не вариант. Есть ли способ обойти это?

Итак, (1) как дублировать одну запись, не сталкиваясь с проблемой primary key, а затем (2) несколько записей с 1 SQL оператором?

Я бы тогда использовал UPDATE, чтобы установить tLink на 1 WHERE tLink=3

1 Ответ

1 голос
/ 26 мая 2020

Я хотел бы продублировать все записи с помощью tLink = 3 и установить их tLink на 1.

Если у вас есть столбец с автонумерацией, вы можете просто оставить его отдельно в операторе вставки. Access автоматически назначит новое значение для каждой вставленной строки.

То, что вы хотите, должно быть таким простым, как:

INSERT INTO tblTest(tLink, tName) SELECT 1, tName FROM tblTest WHERE tLink = 3
...