如何在两张表中实现不重名插入?

flame100 2013-01-05 02:38:43
有两表:A、B,都有字段id,name分别为PRIMARY KEY和UNIQUE KEY,现在我的需求是,向A或B中添加纪录,要求和另外一表中的id和name也要不重复,该怎么做比较好?

第二问,我下面语句的本意是从A和B中查找出name为X的记录数,如果X的记录数不为0,说明X不可用,但实际的效果好像不对,各位帮我看看,谢谢!
select count(*) from A,B where A.name = X or B.name = X;

...全文
125 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
flame100 2013-01-05
  • 打赏
  • 举报
回复
谢谢大家,通过下面方法解决了,如果有记录就不能插入 select name from A where name = X union select name from B where name = X;
flame100 2013-01-05
  • 打赏
  • 举报
回复
insert触发器 的方式一下子搞不懂,暂时不打算考虑了,谢谢大家。 对于避免id的重复问题,我通过设置B表的id,AUTO_INCREMENT = 20000来处理。(id插入以后是不会被修改的)。 对于name的重复,可以通过一条sql语句查询出A、B两表的X记录数吗?谢谢!
flame100 2013-01-05
  • 打赏
  • 举报
回复
引用 4 楼 xuboke 的回复:
select count(*) from A,B where A.name = X or B.name = X; 直接 select count(id) from B where name=X 不就行了。B表内只要没X,那么就算A表里有也因为unique不能插入啊。
谢谢,我是通过存储过程来完成上面的操作的,如果只查一个表的话,就要写两个存储过程,A,B分别处理了,呵呵,我上面的语句在A、B表中都有记录的时候好像能行,但是,如果A中有X,B为空表,调用上面语句返回记录数为0.
ACMAIN_CHM 2013-01-05
  • 打赏
  • 举报
回复
你需要在 before insert / before update 中做检查 http://blog.csdn.net/acmain_chm/article/details/4380183 MySQL 中如何在触发器里中断记录的插入或更新? MySQL 不象其它有些数据库可以在触发器中抛出异常来中断当然触发器的执行以阻止相应的SQL语句的执行。在MySQL的目录版本中还无法直接抛出异常。这样我们如何实现呢? 下面是一种实现的方法。思路就是想办法在触发器中利用一个出错的语句来中断代码的执行。 mysql> create table t_control(id int primary key);Query OK, 0 row...
欢乐的尼美 2013-01-05
  • 打赏
  • 举报
回复
create trigger tr_reInsert on A INSTEAD OF insert as declare @sno varchar(10) begin select @sno = name from inserted if exists(select id from Bwhere type=@sno) begin PRINT('already exist in table B') rollback Tran end else begin insert into A(name) values(@sno) end end
欢乐的尼美 2013-01-05
  • 打赏
  • 举报
回复
select count(*) from A,B where A.name = X or B.name = X; 直接 select count(id) from B where name=X 不就行了。B表内只要没X,那么就算A表里有也因为unique不能插入啊。
rucypli 2013-01-05
  • 打赏
  • 举报
回复
http://www.cnblogs.com/hitwtx/archive/2011/07/25/2116014.html
flame100 2013-01-05
  • 打赏
  • 举报
回复
我用的mysql数据库,insert触发器是怎样的,能帮忙详细点吗?谢谢
rucypli 2013-01-05
  • 打赏
  • 举报
回复
A B上各建立一个insert触发器

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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