Pet*_*ter 48 c# sql truncate sql-delete
我试图用外键截断一个表并得到消息:
" 无法截断表,因为它正被FOREIGN KEY约束引用 ".
我阅读了很多关于这个问题的文献,并认为我通过使用delete找到了解决方案
DELETE FROM table_name DBCC CHECKIDENT (table_name, RESEED, 0)
Run Code Online (Sandbox Code Playgroud)
但我仍然收到一条错误消息:
" DELETE语句与REFERENCE约束冲突 ".
当我尝试使用Microsoft Management Studio删除并执行以前的查询时
DELETE FROM table_name DBCC CHECKIDENT (table_name, RESEED, 0)
Run Code Online (Sandbox Code Playgroud)
它没有给出错误并且正常工作.我想从表中删除所有信息并添加新信息,但我不想删除并创建外键.
cod*_*ger 47
该错误意味着您在其他表中有数据引用您要删除的数据.
您需要删除并重新创建约束或删除外键引用的数据.
假设您有以下表格
dbo.Students
(
StudentId
StudentName
StudentTypeId
)
dbo.StudentTypes
(
StudentTypeId
StudentType
)
Run Code Online (Sandbox Code Playgroud)
假设StudentTypeId列中StudentTypes的StudentTypeId列和列之间存在外键约束Students
如果您尝试删除StudentTypes错误中的所有数据,则会在StudentTypeId列中Students引用StudentTypes表中的数据.
编辑:
DELETE并TRUNCATE基本上做同样的事情.唯一的区别是TRUNCATE不会将更改保存到日志文件中.你也不能使用WHERE子句TRUNCATE
至于为什么你可以在SSMS中运行它而不是通过你的应用程序运行它.我真的看不到这种情况.无论事务源自何处,FK约束仍会抛出错误.
| 归档时间: |
|
| 查看次数: |
139520 次 |
| 最近记录: |