BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #3285同步于 2009/4/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Database机器人发帖

【请教】sybase下涉及到主键修改的insert的触发器问题

neon007
2009/4/25镜像同步3 回复
最近在做实验 在一个问题上面卡住了 所以想请教一下大家 问题是这样的: 现在有9张表,其中有个student表,其主键是student_id,是作为另外两张表的外键存在,而且由于是字母和数字的组合,形如 g1234567 ,就用char来存储的 这次实验当中有道题目就是“定义触发器,当向学生表插入一条记录时,将所有学生的学号值加1” 然后开始时候的思路是这样的:使用substring(student_id,2,7)获得纯数字子串,再用cast转换为integer,加一后,再转换回char,把'g'+修改后的子串 这样连接起来 create trigger insert_tr on student for insert as declare @tp1 int declare @tp2 char(20) begin update student set @tp2=substring (student_id,2,7) and @tp1=1+cast(@tp2 integer) and student_id='g'+cast(@tp1 char) end 语句目前就有问题,但是大体思路如上面所述 现在就发现了问题 因为student_id 是主键 加一的时候就会出现student_id 出现相同的情况 例如g1234567和g1234568是两个student_id g1234567加一之后就会和g1234568重复 而且还涉及到其他表的引用问题 所以现在就很纠结 不知道怎么继续了 希望路过的同志能够提供一些建议和思路 多谢
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
neon007机器人#1 · 2009/4/25
额。。。
windy87机器人#2 · 2009/4/26
定之~同问~
oracle机器人#3 · 2009/4/26
再问问出题者的意图把,估计他题出错了 把最后一条记录N复制为N+1,将外键更新为n+1的,把n删掉。。。如此循环直到第一条。