请问如何快速比较两条记录的异同?
目前的问题是,我在两个表中各写了一条同样的记录,这两个表都有标志字段,可这两条记录各自的标志字段一般是不会一样的,但他们的其他字段内容是相同的。现在要删除一个表中的某条记录,要把另一表中的同样的纪录也删除,该如何做呢?

解决方案 »

  1.   

    victorycyz兄:我的两个表是分布在两台主机的两个SQLServer上的,因为还要有别的程序读取各自本地的表中的信息。
      

  2.   

    如果没有主键那只能采用这种形式咯
    在t1上建立删除触发器
    里面代码类似如下
    delete  t2 from deleted  a where t2.field1=a.field1 and t2.field2=a.field2...
      

  3.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Sync_ApplyRules]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[Sync_ApplyRules]
    GOCREATE TABLE [dbo].[Sync_ApplyRules] (
    [ApplyID] [int] IDENTITY (1, 1) NOT NULL ,
    [SSQLServer] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [SSQLServerDesc] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [SAddrCode] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [SUserName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [SPassword] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TSQLServer] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TSQLServerDesc] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TUserName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TPassword] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [RuleName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [ifUsed] [bit] NULL ,
    [ExTime] [datetime] NULL ,
    [ImTime] [datetime] NULL ,
    [FTPName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [FTPUserName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [FTPPassword] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [FTPPort] [int] NULL ,
    [FTPDir] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TMachineName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [TDownDir] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL 
    ) ON [PRIMARY]
    GO这是建表的SQL脚本。
      

  4.   

    ApplyID 这个字段是自加型的.而且该表无主键.
    另外你还要使这两个表关联起来,用ApplyID 不行.
    如果靠两个表里的字段一个一个去比较,效率又太低.
    请问你 两个sqlserver是在一个局域网内吗??