非常奇怪的一个问题。请大家帮忙看看。

[复制链接]
查看11 | 回复5 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
第一步:创建测试表
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 KEYCLUSTERED (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 KEYCLUSTERED (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' andG.c=I.c or G.b=I.b
if (@v_rowcount = 0)

begin

insert into ccccc values('1','1','1','1')

end
end
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
不奇怪,已经提示得很明确了,排序规则冲突
加点料,Where G.b=i.b collate chinese...
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
楼上正解。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
对楼主的条件看不懂,G.a='aaaaa' ?啥意思?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
G.a='aaaaa'表名判断条件啊。有没有对那条select语句该井的。或者类似解决方法。
再请教一问题:如果能获取表种个字段的字符集。谢谢。
[ 本帖最后由 esunshine 于 2008-9-18 23:36 编辑 ]
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
G.a='aaaaa' ?怎吗可能作为判断表名的条件呢?在你的查询中,G是表BBBBB的别名,这个表里怎吗可能会有AAAAA表呢?
你问的字段的字符集,那就查一下相关的字典了,比如:sysobjcolumns之类的。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行