主键被更新,外键却超越了约束,这算不算是一个BUG呢?
--表结构如下,简单地说就是ID为tbItemGroup的主键,SalesAccount为参照tbAccount的外键
CREATE TABLE [dbo].[tbItemGroup] (
[ID] [char] (8) NOT NULL ,
[Name] [nvarchar] (50) NOT NULL ,
[SalesAccount] [char] (8) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbItemGroup] WITH NOCHECK ADD
CONSTRAINT [PK_tbPartGroup] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[tbItemGroup] ADD
CONSTRAINT [FK_tbItemGroup_Account] FOREIGN KEY
(
[SalesAccount]
) REFERENCES [dbo].[tbAccount] (
[AccountID]
)
GO
现在如果我:
update tbItemGroup SET salesAccount='一个tbAccount中不存在的键' WHERE ID='tbItemGroup中存在的主键'
系统当然会告诉我这个错误:
服务器: 消息 547,级别 16,状态 1,行 1
UPDATE 语句与 COLUMN FOREIGN KEY 约束 'FK_tbItemGroup_account' 冲突。该冲突发生于数据库 'xxxxx',表 'tbAccount', column 'accountID'。
语句已终止。
我再这样:
update tbItemGroup SET ID='tbItemGroup中不存在的值',salesAccount='一个tbAccount中不存在的键' WHERE ID='tbItemGroup中存在的主键'
系统同样出现上述错误:
但如果我这样:
update tbItemGroup SET ID='原值,即WHERE条件后的那个值',salesAccount='一个tbAccount中不存在的键' WHERE ID='tbItemGroup中存在的主键'
它就成功执行了,此时数据库中就出现了一条非法的数据
请问,这是SQL SERVER 2000已知的错误吗?我已经打了SP2补丁了
谢谢!