我正在使用 MS Access 2016,我的数据库中有一个表,它通过 ODBC 连接链接到外部源。数据来自 MS Excel。我创建了查询并链接到宏。它运行正常,但它删除了上一个表并删除了我设置的主键。这是我的 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
你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 数据库引擎将不会附加记录。