处理具有FK参考约束的数据库行的删除的最佳做法是什么?我的目标是向最终用户展示更多用户友好的错误消息。请注意,我不想t want to delete department with employees and that I don
t想要在表上进行级联删除。使用外键删除行时用户友好的错误消息参考约束
例如,如果我们有两个表:
-- Department table
CREATE TABLE [dbo].[Department](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
-- Employee table
CREATE TABLE [dbo].[Employee](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DepartmentId] [int] NULL,
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Employee] WITH CHECK ADD CONSTRAINT [FK_Employee_Department] FOREIGN KEY([DepartmentId])
REFERENCES [dbo].[Department] ([Id])
GO
ALTER TABLE [dbo].[Employee] CHECK CONSTRAINT [FK_Employee_Department]
如果一个人想从部门表,在该行的员工表中引用删除行。应该怎么做?
之前执行DELETE语句,检查是否排在员工表中引用而优雅地恢复错误GUI(与eployee名单如有必要)
执行DELETE语句,并做捕获异常,如:
catch (SqlException ex) { switch (ex.Number) case 547: HandleErrorGracefully() }
一些其他的方式?
将是很好,如果有人有一些代码/链接到应用程序样本...
可能的重复http://stackoverflow.com/questions/7944559/how-to-manipulate-sqlexception-message-into-user-friendly-message – 2012-01-18 12:51:53