SQL Server,使用存储过程插入数据

时间:2016-05-01 16:16:04

标签: sql sql-server stored-procedures

我试图通过使用存储过程将数据插入到我的数据库中,但是我的3个列使用了int标识类型而我无法插入。当身份插入关闭时,它一直说不能这样做

2 个答案:

答案 0 :(得分:1)

启用IDENTITY_INSERT后,只表示您可以将自己的数据放入IDENTITY列。它不会禁用您在表上的FK约束。您可以删除FK约束,或禁用它,并冒数据库中存在逻辑上不一致的数据,或者您可以修复SP,这样就不会插入任何重复的值。

答案 1 :(得分:0)

有些不对劲。单个Identity类表中的三个列?我很难想象它们能代表什么,我不得不想知道自然键在哪里。

在任何情况下,IDENTITY_INSERT都不是你想要随便putz的东西。允许 ad hoc 更改数据的管理功能,例如批量加载数据库。

如果你确实知道身份是什么(作为你的存储过程的输入)那么表是错误定义的,因为它应该是标识源。如果您不知道,或者您愿意让表生成标识值,那么您只需在INSERT语句中不提及这些列。最多,生成的值将是存储过程的OUTPUT参数。