Я использую MS Access 2016, у меня есть таблица в моей базе данных, которая связана с внешним источником через соединение ODBC. Данные получены из MS Excel. Я создал Query и связался с макросом. Он работает правильно, но удаляет предыдущую таблицу и удаляет первичный ключ, который я установил. Вот мой запрос Sql:

SELECT AllStaff.NAMEID, AllStaff.USERNAME, AllStaff.DEPARTMEN,
    AllStaff.Lastname, AllStaff.Firstname, AllStaff.RFCARDNUMB, 
    AllStaff.[PERSONAL R], AllStaff.VENDOR INTO AllStaff1
FROM AllStaff
WHERE (((AllStaff.NAMEID) Is Not Null));

Поэтому я хочу установить NAMEID в качестве первичного ключа, он останется первичным ключом после добавления значений. заранее спасибо

1 ответ1

0

Вам нужно INSERT INTO ... SELECT , а не SELECT ... INTO

Официальный синтаксис: INSERT INTO target [(field1[, field2[, …]])] [IN externaldatabase] SELECT [source.]field1[, field2[, …] FROM tableexpression

Пытаться:

INSERT INTO AllStaff1 (AllStaff.NAMEID, AllStaff.USERNAME, AllStaff.DEPARTMEN, 
    AllStaff.Lastname, AllStaff.Firstname, AllStaff.RFCARDNUMB, AllStaff.[PERSONAL R], 
    AllStaff.VENDOR)
select AllStaff.NAMEID, AllStaff.USERNAME, AllStaff.DEPARTMEN, AllStaff.Lastname, 
    AllStaff.Firstname, AllStaff.RFCARDNUMB, AllStaff.[PERSONAL R], AllStaff.VENDOR
FROM AllStaff
WHERE (((AllStaff.NAMEID) Is Not Null));

Это не удалит таблицу и должно сохранить ваш первичный ключ. Предупреждение от ссылки MS выше:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .