求一触发器的写法(分数只给一人)

wooden954 2003-12-16 03:13:05
我有一个UserInfo表,要求在插入的时候其中的两列不能有重复值,列字义如下:
ID:长整型,自动增长,主键
Name:字符型,不为空
ZhuanYe:字符型
Sex:字符型

要求其中Name列和ZhuanYe两列不能相同,比如数据

ID name ZhuanYe Sex
1 张 电子 男
2 王 机械 男
3 李 管理 男
4 李 管理 女
5 赵 机械 女

其中第三行和第四行只能要其中的一行,这个应用在插入记录时的触发器应该怎么写呀???
...全文
45 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
diskA 2003-12-16
  • 打赏
  • 举报
回复
Create trigger InsertUser
on UserInfo for insert
as
begin
if exists(select * from UserInfo where name+ZhuanYe=inserted.name+inserted.ZhuanYe)
rollback
end
wooden954 2003-12-16
  • 打赏
  • 举报
回复
正确通过的应为:
Create trigger InsertUser
on UserInfo for insert
as
begin
if (select Count(*) from UserInfo where (EMail in (select EMail from inserted)) and (ListNum in (select ListNum from inserted)))>1
rollback
end
qyyok 2003-12-16
  • 打赏
  • 举报
回复
Name列和ZhuanYe列设为主键
sunshareforever 2003-12-16
  • 打赏
  • 举报
回复
create trigger tri_insert on UserInfo
for insert as
begin
if exests (select * from userinfo where name in
(select name from inserted ) or zhuanye in(select zhuanye from inserted ))

rollback

end
sunshareforever 2003-12-16
  • 打赏
  • 举报
回复
if exests (select * from userinfo where name in
(select name from inserted ) or zhuanye in(select zhuanye from inserted ))

.................
nxfbccu 2003-12-16
  • 打赏
  • 举报
回复
对这个表进行插入是另外一个表触发的吧,不可能自己对自己触发
angle097113 2003-12-16
  • 打赏
  • 举报
回复
我的建议就是在beforepost事件来处理的
看看select Count(*) as Total From Table1 where 复合条件的 看看返回的结果决定是插入还是报错误的信息 应该可以实现的把
helodd 2003-12-16
  • 打赏
  • 举报
回复
create trigger aaa UserInfo for insert
as
begin
if exists(select * from UserInfo where (name=select name from inserted)
and (ZhuanYe =select ZhuanYe from inserted))
rollback
end
helodd 2003-12-16
  • 打赏
  • 举报
回复
up..给分

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧