相关疑难解决方法(0)

无法截断表,因为它是由FOREIGN KEY约束引用的?

使用MSSQL2005,如果我先截断子表(具有FK关系主键的表),是否可以截断具有外键约束的表?

我知道我也可以

  • 使用DELETE不带where子句然后RESEED使用身份(或)
  • 删除FK,截断表,然后重新创建FK.

我认为只要我在父母之前截断子表,我就可以不用上面的任何一个选项,但是我收到了这个错误:

无法截断表'TableName',因为它正被FOREIGN KEY约束引用.

t-sql sql-server truncate sql-server-2005 foreign-keys

427
推荐指数
16
解决办法
61万
查看次数

如何在SQL Server 2005中的一个语句中更新两个表?

我想一次更新两个表.我如何在SQL Server 2005中这样做?

UPDATE 
  Table1, 
  Table2
SET 
  Table1.LastName='DR. XXXXXX', 
  Table2.WAprrs='start,stop'
FROM 
  Table1 T1, 
  Table2 T2
WHERE 
  T1.id = T2.id
AND 
  T1.id = '010008'
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2005

183
推荐指数
6
解决办法
47万
查看次数

166
推荐指数
4
解决办法
12万
查看次数

为什么即使更新语句失败,此SQL Server事务提交仍然存在

我有这个交易:

BEGIN TRAN;
Update Job set JobTitle = 'wonderfullivin' where JobId = 1271;
Update Job set LastTransactionDate = null where JobId = 1271;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

其中第二个语句必须失败,因为LastTransactionDate设置为NOT NULL.当我查看事务日志时,我看到事务已提交.它不应该被中止,因为其中一个查询失败了吗?

sql transactions

3
推荐指数
1
解决办法
1183
查看次数

SQL Server何时回滚错误的事务?

我一直在研究这两个问题:

SQL Server - 事务在错误时回滚?

sql事务不回滚

根据我的研究,我得出的结论是查询应该这样写:

set XACT_ABORT ON
begin tran FB5773_1
begin try
    -- Do some changes
    commit tran FB5773_1;
end try
begin catch
    IF EXISTS (SELECT [name] FROM sys.dm_tran_active_transactions WHERE name = 'FB5773_1')
        rollback tran FB5773_1;
end catch
Run Code Online (Sandbox Code Playgroud)

不过我想知道为什么交易是这样的

begin tran FB5773_1
--do some stuff
commit tran FB5773_1;
Run Code Online (Sandbox Code Playgroud)

或这个

set XACT_ABORT ON
begin tran FB5773_1
--do some stuff
commit tran FB5773_1;
Run Code Online (Sandbox Code Playgroud)

在某些情况下错误时不回滚,不回滚的情况是什么?

sql-server transactions

3
推荐指数
1
解决办法
3205
查看次数