我想使用查询:INSERT INTO Price (id_price, id_firm, id_city, name)价值观('12002', '1429', '73041', 'АРЕНДА (ПРОКАТ) АВТОКРАНА Г/П 25Т'),('12003', '1429', '73041', 'ПЛИТКА КЕРАМИЧЕСКАЯ ГРАНИТ (КЕРАМОГРАНИТ) АССОРТ.'),('12004', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОВЫШКА (ПОДЪЕМНИК)'),('12005', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОКРАНОМ Г/П 25Т'),('12006', '1429', '73041', 'РАБОТЫ КОМПРЕССОРОМ ВСЕ ВИДЫ'),( '12007', '1429', '73041', 'РАБОТЫПОГРУЗОЧНО-РАЗГРУЗОЧНЫЕАВТОКРАНОМ-МАНИПУЛЯТОРОМГРУЖУ-ВОЖУНАБАЗЕГАЗГ/П4Т'),('12008', '1429', '73041', 'РАБОТЫ СПЕЦТЕХНИКОЙ ВСЕ ВИДЫ'),('12009', '1429', '73041', 'РАБОТЫ СТРОИТЕЛЬНЫЕ ВСЕ ВИДЫ'),(120010"、1429"、73041"、ФОРСУНКА Д/КАМАЗ ДВИГАТЕЛЬ КАММИНС(康明斯)АССОРТ");但我得到错误:当 IDENTITY_INSERT 设置为 OFF 时,无法为表 'Price' 中的标识列插入显式值.:插入价格(id_price、id_firm、id_city、name)价值观('12002', '1429', '73041', 'АРЕНДА (ПРОКАТ) АВТОКРАНА Г/П 25Т'),('12003', '1429', '73041', 'ПЛИТКА КЕРАМИЧЕСКАЯ ГРАНИТ (КЕРАМОГРАНИТ) АССОРТ.'),('12004', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОВЫШКА (ПОДЪЕМНИК)'),('12005', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОКРАНОМ Г/П 25Т'),('12006', '1429', '73041', 'РАБОТЫ КОМПРЕССОРОМ ВСЕ ВИДЫ'),( '12007', '1429', '73041', 'РАБОТЫПОГРУЗОЧНО-РАЗГРУЗОЧНЫЕАВТОКРАНОМ-МАНИПУЛЯТОРОМГРУЖУ-ВОЖУНАБАЗЕГАЗГ/П4Т'),('12008', '1429', '73041', 'РАБОТЫ СПЕЦТЕХНИКОЙ ВСЕ ВИДЫ'),('12009', '1429', '73041', 'РАБОТЫ СТРОИТЕЛЬНЫЕ ВСЕ ВИДЫ'),(120010"、1429"、73041"、ФОРСУНКА Д/КАМАЗ ДВИГАТЕЛЬ КАММИНС(康明斯)АССОРТ");请告诉我为什么我会出错以及如何正确插入数据? 解决方案 SET IDENTITY_INSERT Table_Name ON;走/* 做你的插入 */SET IDENTITY_INSERT Table_Name OFF;走注意不是一个好习惯,根本不建议这样做.你很可能会结束有重复的值,所以让标识列生成值为你.如果您希望能够自己插入值,那么请执行根本不让它成为标识列.如果您在标识列中显式插入值,为确保您永远不会得到重复值,您可以在显式插入值后重新设置标识列值:DBCC CHECKIDENT ('Table_Name', RESEED, 0);--<-- 重新种子值到 0走DBCC CHECKIDENT ('Table_Name', RESEED);--<-- 将值重新设定为下一个可用值走Structure tables and result query on sqlfiddleI want use query:INSERT INTO Price (id_price, id_firm, id_city, name) VALUES ('12002', '1429', '73041', 'АРЕНДА (ПРОКАТ) АВТОКРАНА Г/П 25Т'), ('12003', '1429', '73041', 'ПЛИТКА КЕРАМИЧЕСКАЯ ГРАНИТ (КЕРАМОГРАНИТ) АССОРТ.'), ('12004', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОВЫШКА (ПОДЪЕМНИК)'), ('12005', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОКРАНОМ Г/П 25Т'), ('12006', '1429', '73041', 'РАБОТЫ КОМПРЕССОРОМ ВСЕ ВИДЫ'), ('12007', '1429', '73041', 'РАБОТЫ ПОГРУЗОЧНО-РАЗГРУЗОЧНЫЕ АВТОКРАНОМ-МАНИПУЛЯТОРОМ ГРУЖУ-ВОЖУ НА БАЗЕ ГАЗ Г/П 4Т'), ('12008', '1429', '73041', 'РАБОТЫ СПЕЦТЕХНИКОЙ ВСЕ ВИДЫ'), ('12009', '1429', '73041', 'РАБОТЫ СТРОИТЕЛЬНЫЕ ВСЕ ВИДЫ'), ('120010', '1429', '73041', 'ФОРСУНКА Д/КАМАЗ ДВИГАТЕЛЬ КАММИНС (CUMMINS) АССОРТ.');But i get errors:Cannot insert explicit value for identity column in table 'Price' when IDENTITY_INSERT is set to OFF.: INSERT INTO Price (id_price, id_firm, id_city, name) VALUES ('12002', '1429', '73041', 'АРЕНДА (ПРОКАТ) АВТОКРАНА Г/П 25Т'), ('12003', '1429', '73041', 'ПЛИТКА КЕРАМИЧЕСКАЯ ГРАНИТ (КЕРАМОГРАНИТ) АССОРТ.'), ('12004', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОВЫШКА (ПОДЪЕМНИК)'), ('12005', '1429', '73041', 'РАБОТЫ ГРУЗОПОДЪЕМНЫЕ АВТОКРАНОМ Г/П 25Т'), ('12006', '1429', '73041', 'РАБОТЫ КОМПРЕССОРОМ ВСЕ ВИДЫ'), ('12007', '1429', '73041', 'РАБОТЫ ПОГРУЗОЧНО-РАЗГРУЗОЧНЫЕ АВТОКРАНОМ-МАНИПУЛЯТОРОМ ГРУЖУ-ВОЖУ НА БАЗЕ ГАЗ Г/П 4Т'), ('12008', '1429', '73041', 'РАБОТЫ СПЕЦТЕХНИКОЙ ВСЕ ВИДЫ'), ('12009', '1429', '73041', 'РАБОТЫ СТРОИТЕЛЬНЫЕ ВСЕ ВИДЫ'), ('120010', '1429', '73041', 'ФОРСУНКА Д/КАМАЗ ДВИГАТЕЛЬ КАММИНС (CUMMINS) АССОРТ.');Tell me please why i get errors and how correct insert data ? 解决方案 SET IDENTITY_INSERT Table_Name ON;GO /* Do your Inserts */SET IDENTITY_INSERT Table_Name OFF;GONote Not a good practice, not advised at all. You may very well end up having duplicate values so let the identity column generate the values for you. if you want to be able to insert the values yourself then do not make it an identity column at all.If you are explicitly inserting values in an Identity column, to make sure you never end up with duplicate values, you can reseed the identity column value after you have explicitly inserted values: DBCC CHECKIDENT ('Table_Name', RESEED, 0); --<-- Reseed value to 0GODBCC CHECKIDENT ('Table_Name', RESEED); --<-- Reseed value to next available valueGO 这篇关于当 IDENTITY_INSERT 设置为 OFF 时,SQL 无法为表“表"中的标识列插入显式值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-11 08:04