关于sql表关联问题,如有大神告诉我将不胜感激(会有珍贵资源分享)

唐柯德 发布于 2013/06/02 18:20
阅读 245
收藏 1

现在有两个表,customer和room。customer有id,name,room_id这三个字段。room里有id,roomid,num这三个字段,其中customer里的room_id和room里的id主外键关联。插入数据inser into customer(id,name,room_id) values(1,jack,2),(2,tom,2),(3,lily,4)。insert into room(id,roomid,num)values(2,101,4),(3,102,6)。现在可以看到在表room中id=2中有两条关联数据jack和tom,id=3中有一条关联数据lily。那我怎样对其关联的字段条数进行限制,也就是我如果想在room中id= 2中只能让其在customer中插入4个关联数据怎么做?如果没听明白我说一个顾客租房的例子,上面的表customer就是顾客,room就是房间,顾客表里有id,姓名(name),关联room的id(room_id)。房间表里id,房号(roomid),床位数(num)。现在当num=4时也就是这个房子只有4个床位其对应的id为2,也就是在customer中room_id=2的顾客不能超过4个,就是要对插入记录进行限制,该怎么实现?(如果大神还能帮我提供思路怎么查出空余的床位的房号更好)

加载中
0
huan
huan
触发器检查一下,同时在room表中记录一下customer数量
唐柯德
唐柯德
触发器里该怎么做了
0
黄龍
黄龍

function or procedure or triggle !

0
jhting
jhting

亲!如果你想在一条语句里就搞定你可以这样写哦!

比如像下面的:如下,插入 customer的一个客户信息:id = 3,name = h2,roomid=102,

insert into customer([id],[name],room_id) select 3,'h2',102   
where (select count(*) as a from customer where room_id = 102) 
< (select num from room where roomid = 102)

提醒,如果你的表不大(就是customer和room),我想这样的方式,比function和procedure就好,不管怎么样最好不要用triggle。

如果表大,里面的子查询慢的话,就想想其它的办法吧!

返回顶部
顶部