数据库中3个表(只是个例子)
1表中有 学号、姓名、年龄、性别、班级、班主任
2表中有 学号、姓名、班级、语文分数、数学分数、英语分数、
3表中有 学好、姓名、班级、综合科目分数SQL中何种功能可以达到:
1.在向1号表中增加数据时,如2和3表中有对应的学号则自动在2,3表中填写姓名,班级。最基础的方法是在3张表中同时写入姓名,班级,但肯定慢。那么这样的操作如何完成?
2.在向1号表中增加新数据时,如果不允许加入重复数据的话,如何操作?难道先读遍1表?select里面发现有这条数据通知客户端?我印象中可以写触发时间来完成这样的功能吧?两个都是基础问题,麻烦占用各位一点点时间解答,最好给段事例代码。谢谢各位!

解决方案 »

  1.   

    谢谢楼上两位,突然又想到一个问题。
    查询的时候如何操作。
    比如我想查学号是001学生的全部成绩。
    我现在的操作是分别select3个表。然后填到一个控件中。正确的运行速度最快的方式是什么?
      

  2.   


    select a.学号, a.姓名, b.班级, b.语文分数, b.数学分数, b.英语分数, c.综合科目分数
    from 表1 a, 表2 b, 表3 c
    where a.学号 = b.学号 and a.学号 = c.学号
      

  3.   


    select a.学号, a.姓名, b.班级, b.语文分数, b.数学分数, b.英语分数, c.综合科目分数
    from 表1 a, 表2 b, 表3 c
    where a.学号 = b.学号 and a.学号 = c.学号 and a.学号 = 001
      

  4.   


    1.create trigger tri_trm on 表1
    for insert 
    as 
    update 表2 set 表2.姓名=a.姓名....   from 表2 join inserted a
    on 表2.学号=a.学号
    update 表3 set 表3.姓名=a.姓名....   from 表3 join inserted a
    on 表3.学号=a.学号2.insert into 表1 select distinct * from 数据表
    (两个数据字段和类型都要一致)
      

  5.   

    楼主朋友,第一个问题可以用触发器来实现
    create trigger tg on 表1
    for insert,update
    as 
      update 表2 
         set 表2.姓名=a.姓名,
         set 表2.班级=a.班级
      from 表2 
      left join inserted a
      on 表2.学号=a.学号  update 表3 
        set 表3.姓名=a.姓名,
        set 表3.班级=a.班级
      from 表3 
      left join inserted a
      on 表3.学号=a.学号第2个问题可以添加主键约束来限制字段是唯一的.