问一个触发器的问题
A表结构 ID(主键),编号,座位号......要求insert A表时(此时编号为空),触发器功能是对刚insert的记录的座位号修改到编号字段中去,在这个触发器中SQL语句一定是这样的:update A set 编号=座位号 where id=... ,我要问的是这个where 条件我该怎么写,就是ID我怎么确定,保证update的编号字段是刚insert进去的那条记录的。
同理,update A 表记录时触发时也有这问题。 --------------------编程问答-------------------- 你可以直接在insert的时候就做个触发器来使得Id的值为座位号啊,
为何在插入后去update记录的Id呢?
至于如何确定是当前插入的,就用 new.座位号,呵呵! --------------------编程问答-------------------- where 另一个表的id = NEW.id; --------------------编程问答-------------------- 是啊,我是想做个insert触发器,但这个触发器的代码,update 语句我不知道如何确定where条件,就是对产生触发的那条记录做修改。用new.座位号,这样做在并发时会不会有问题?就是说如果许多用户同时insert A表很多记录,用new.座位号能保正我修改的就是产生触发的那条记录吗? --------------------编程问答-------------------- where 另一个表的id = NEW.id; 会有并发的问题吗? --------------------编程问答-------------------- 不会的 --------------------编程问答-------------------- where 另一个表的id = NEW.id;这样做会有并发问题吗?就是说如果许多用户同时insert A表很多记录,用new.座位号能保正我修改的就是产生触发的那条记录吗? --------------------编程问答-------------------- 这个操作似乎是原子级的 --------------------编程问答-------------------- 不会的,呵呵,你插入是属于一个事务的
肯定会在做完一个事务再做下一个的,呵呵
数据库自身有并发控制的,
这个你不用担心啦 --------------------编程问答-------------------- id = NEW.id只要不会有并发问题,那就可以了,而且我那并发量小得可怜,最多只有5个人同时操作,应该不会有问题吧。多谢各位帮助。 --------------------编程问答-------------------- 原来insert语句和由此产生的insert触发器中的操作是同一事务,长见识了,多谢。 --------------------编程问答-------------------- 不是inserted.id? --------------------编程问答-------------------- inserted.id?我现在在网吧,回去试试看,看用哪个。
补充:.NET技术 , ASP.NET