为什么没有一个TRUNCATE上mygroup工作?即使ON DELETE CASCADE SET我得到了:
错误1701(42000):无法截断外键约束中引用的表(
mytest.instance,CONSTRAINTinstance_ibfk_1FOREIGN KEY(GroupID)REFERENCESmytest.mygroup(ID))
drop database mytest;
create database mytest;
use mytest;
CREATE TABLE mygroup (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;
CREATE TABLE instance (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
GroupID INT NOT NULL,
DateTime DATETIME DEFAULT NULL,
FOREIGN KEY (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
UNIQUE(GroupID)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud) 如何使用Entity Framework快速删除表中的所有行?
我目前正在使用:
var rows = from o in dataDb.Table
select o;
foreach (var row in rows)
{
dataDb.Table.Remove(row);
}
dataDb.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
但是,执行需要很长时间.
还有其他选择吗?
我有一个数据库的测试环境,我想在测试周期开始时用新数据重新加载.我对重建整个数据库不感兴趣 - 只需简单地"重新设置"数据.
使用TSQL从所有表中删除所有数据的最佳方法是什么?是否有可以使用的系统存储过程,视图等?我不想为每个表手动创建和维护truncate table语句 - 我希望它是动态的.
我们有一个客户端应用程序在SQL Server 2005上运行一些SQL,如下所示:
BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;
Run Code Online (Sandbox Code Playgroud)
它由一个长字符串命令发送.
如果其中一个插入失败,或者命令的任何部分失败,SQL Server是否会回滚事务?如果它没有回滚,我是否必须发送第二个命令才能回滚?
我可以给出关于我正在使用的api和语言的细节,但我认为SQL Server应该对任何语言做出相同的响应.
我有一个名为PX_Child的表,它在PX_Parent上有一个外键.我想暂时禁用此FK约束,以便我可以截断PX_Parent.我不确定这是怎么回事.
我试过这些命令
ALTER TABLE PX_Child NOCHECK CONSTRAINT ALL
ALTER TABLE PX_Parent NOCHECK CONSTRAINT ALL
(truncate commands)
ALTER TABLE PX_Child CHECK CONSTRAINT ALL
ALTER TABLE PX_Parent CHECK CONSTRAINT ALL
Run Code Online (Sandbox Code Playgroud)
但截断仍然告诉我,由于外键约束,它不能截断PX_Parent.我在网上看了一遍,似乎找不到我做错了什么,对不起这个问题的基本性质.
如何在SQL中循环逗号分隔列表?我有一个ID列表,我需要将这些ID传递给存储过程.我不能改变存储过程.我需要弄清楚如何为每个id执行SP.给我一些想法,我可以从那里继续.
谢谢.
我有一个UDF从表中查询数据.但是,该表需要作为参数定义.例如我不能:
选择*来自[dbo].[TableA]
我需要这样的东西:
选择*来自[dbo].[@ TableName]
上面的行不起作用,UDF也禁止我将查询设置为字符串并调用exec().我可以在一个过程中执行此操作,但我也无法从UDF调用该过程.
有没有人知道如何在没有某种大规模切换声明的情况下在UDF中实现这一目标?
我尝试了很多命令来禁用我的数据库中的表约束来截断所有表,但现在它仍然给我同样的错误:
无法截断表'',因为它是由FOREIGN KEY约束引用的.
我试试
EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
EXEC sp_MSforeachtable "TRUNCATE TABLE ?"
Run Code Online (Sandbox Code Playgroud)
我为每张桌子试过这个
ALTER TABLE [Table Name] NOCHECK CONSTRAINT ALL
truncate table [Table Name]
ALTER TABLE [Table Name] CHECK CONSTRAINT ALL
Run Code Online (Sandbox Code Playgroud)
每次我有上一条错误消息.我怎么解决这个问题?
我有一个表包含2个字段的表.在我的另一个数据库中,我有一个参与者表(也有2列).参与者表我必须在人员表中插入值.但在每次插入之前,我都希望截断人员表.
我已经尝试将Execute Sql任务链接到数据流任务.但是它显示出存在主外键关系的错误.
我收到以下错误。
无法删除对象“tablename”,因为它被 FOREIGN KEY 约束引用。
这意味着有我想要截断的表的引用。然后我使用以下查询删除所有表的所有约束。
use mydb
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"
truncate table mytable.
Run Code Online (Sandbox Code Playgroud)
但它不起作用,请帮助。
sql ×6
sql-server ×6
constraints ×2
foreign-keys ×2
t-sql ×2
.net ×1
c# ×1
database ×1
dml ×1
linq ×1
mysql ×1
ssis ×1
transactions ×1
truncate ×1