非常奇怪的一个问题。请大家帮忙看看。
第一步:创建测试表
CREATE TABLE aaaaa
             (
        a   varchar (18) COLLATE Chinese_PRC_CS_AS_WS NULL ,
        b   varchar (18) COLLATE Chinese_PRC_CS_AS_WS NOT NULL ,
        c   decimal (18, 0) NOT NULL ,
        d   varchar (10) COLLATE Chinese_PRC_CS_AS_WS NULL 
        );ALTER TABLE aaaaa ADD CONSTRAINT [PK_aaaaa ] PRIMARY KEY  CLUSTERED (c,b);CREATE TABLE bbbb
             (
        a   varchar (18) COLLATE Chinese_PRC_CI_AS NULL ,
        b   varchar (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
        c   decimal (18, 0) NOT NULL ,
        d   varchar (10) COLLATE Chinese_PRC_CI_AS NULL 
        );CREATE TABLE ccccc 
             (
        a   varchar (18) COLLATE Chinese_PRC_CI_AS NULL ,
        b   varchar (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,
        c   decimal (18, 0) NOT NULL ,
        d   varchar (10) COLLATE Chinese_PRC_CI_AS NULL 
        );
ALTER TABLE bbbbADD CONSTRAINT [PK_bbbb ] PRIMARY KEY  CLUSTERED (c,b);我要实现的功能是:当在aaaaa表内插入一条数据时,首先判断bbbb是否有这条数据的存在,如果存在就不触发,如果不存在就触发。
下面是我写的一个触发器:但是报:无法解决 equal to 操作的排序规则冲突。请大家给点意见创建触发器
create TRIGGER aaaaa_CBD_INSERTING ON aaaaa FOR insert AS BEGIN  declare @v_rowcount int 
select @v_rowcount=count(*) from bbbb G,inserted I where G.a='aaaaa' and  G.c=I.c or G.b=I.b 
if (@v_rowcount = 0) 
        begin 
                insert into ccccc values('1','1','1','1')
        end 
end

解决方案 »

  1.   


    select @v_rowcount=count(*) from bbbb G,inserted I where G.a='aaaaa' and  G.c=I.c or G.b=I.b 
    COLLATE Chinese_PRC_CS_AS_WS NULL 
    排序规则不同,加上上面这句就可以了
      

  2.   

    try:select @v_rowcount=count(*) from bbbb G,inserted I 
    where G.a='aaaaa' and  (G.c collate Chinese_PRC_CI_AS =I.c collate Chinese_PRC_CI_AS or G.b collate Chinese_PRC_CI_AS =I.b collate Chinese_PRC_CI_AS)
      

  3.   

    这个已经是变通的方法了。
    强硬的方法是把表的collation彻底改过来。
      

  4.   

    查询分析器里,打开表定义,选中某一列,下面的“列属性”里的“Table Designer”的collation,选择一个恰当的即可。
      

  5.   

    不好意思,我可能没有说明白。我想说:使用sql语句如何获取到。