• λ我爱Aspx >> C#.Net >> 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除
  • 实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除

  • :aspxer  Դ:5iaspx  :2007-7-30 6:11:26  ؼ:数据
  • 问题描述:

    某个基础信息表,与系统中30多个表存在外键关系,当删除基础数据时,需要判断是否已经被用过,如果用过则更改标志位,如果没有用过则直接删除,如何能很好实现这个处理?最好能够自动适应表的变化

    问题解决(SQL Server 2005)

    -- SQL Server 2005的错误处理容易控制, 因此,SQL Server 2005中可以直接删除, 通过错误处理来确定是否需要更新.

    -- 示例如下.

    USE tempdb

    GO

    CREATE TABLE m(

    id int PRIMARY KEY,

    bz bit)

    INSERT m SELECT 1, 0

    UNION ALL SELECT 2, 0

    CREATE TABLE c(

    id int primary key,

    a_id int references m(id)

    ON DELETE NO ACTION)

    INSERT c SELECT 1, 1

    GO

    -- 删除处理存储过程

    CREATE PROC dbo.p_delete

    @id int

    AS

    SET NOCOUNT ON

    BEGIN TRY

    BEGIN TRAN

    DELETE FROM m WHERE id = @id

    COMMIT TRAN

    END TRY

    BEGIN CATCH

    ROLLBACK TRAN

    IF ERROR_NUMBER() = 547 -- 如果是外键约束错误

    BEGIN

    BEGIN TRY

    BEGIN TRAN -- 更新标志

    UPDATE m SET bz = 1

    Ҷƪл˵?
  • һƪJSP 国际化-格式化货币和日期
    һƪ一个无刷新效果定时自动更新页面的例子(ASP.NET2.0-应用xmlhttp)