三个表分别是movieinfo:
    mid    mname     mdirectorbroadcastingtime:
    bcid    time     price     seatmovie_broadcast
   mid   bcid如何实现插入movieinfo 和 broadcastingtime 的同时也插入到movie_broadcast表中  (mid和bcid是自增的)
或者说在插入movieinfo 或者broadcastingtime的时候 是否可以返回 mid 或者cid
谢谢了

解决方案 »

  1.   

    首先说明,楼主建的表有问题(个人认为movie_broadcast应该合併到broadcastingtime中),就目前描述的需求而言.如果确实需要更新,存储过程中可以随便实现.
      

  2.   

    应该得做存储过程
    或者一次写3个语句,,
    不然你怎么做
    mid  bcid 的一一对应
      

  3.   

    #2楼
    问题是在保存了movieinfo 和broadcasting之后并不知道他们的id是多少 如何是好
      

  4.   

    我知道用hibernate的时候可以获得id  但是用sql怎么实现呢
      

  5.   

    2005版本以后可以用insert的output子句返回插入的列值2000只能用触发器
      

  6.   

    楼主,自然能插入mid ,bcid
    这个表movie_broadcast 还不能插入吗?三个表一个个插入,加事务
      

  7.   

    三个表单个插入当然是可以的 但是问题是 当我插入了一个条movieinfo 和 多条broadcastingtime 
    然后如何关联起来因为我插入几条记录之后我并不知道他们的mid和bcid
      

  8.   

    自增列表插入后自增列值可用@@identity系统公用变量取得
      

  9.   

    提供一个意见:可以再触发器当中用output ,return实现。。不知道是否正确。如果有错误,还请见谅
      

  10.   


    再给你一个参考时关于在INSERT之前触发触发器的和我上面的一起用就可以实现引用 3 楼 demonsine 的回复:#2楼问题是在保存了movieinfo 和broadcasting之后并不知道他们的id是多少 如何是好提供一个意见:可以再触发器当中用output ,return实现。。不知道是否正确。如果有错误,还请见谅 
    这个功能了http://topic.csdn.net/t/20020429/17/689749.html
      

  11.   

    参考一下。。有点乱不过可以实现你上面说的。。
    create table sttt
    (
      id int
    )insert into sttt
    select 1
    union all
    select 2
    union all
    select 3select * from sttt
    --触发器调用存储过程
    alter trigger sttt_update
    on sttt
    for insert
    as
    declare @maxid int
    exec stttpro @maxid outputdeclare @q int
    set @q=0
    update sttt set id=@q,@q=@q+1 where @q<(select @maxid)
    --存储过程
    alter proc stttpro
    @maxid int output
    as
    set @maxid=(select max(id) from sttt)--添加记录
    insert into sttt values(120)
      

  12.   

    应该可以用@@identity来得到的
    如下:if OBJECT_ID('tab_a') is not null drop table tab_a
    CREATE TABLE [dbo].[tab_a](
    [id1] [int] IDENTITY(1,1) NOT NULL,
    [name1] [nchar](10) NULL
    ) ON [PRIMARY]
    GO
    if OBJECT_ID('tab_b') is not null drop table tab_b
    CREATE TABLE [dbo].[tab_b](
    [id2] [int] IDENTITY(1,1) NOT NULL,
    [name2] [nchar](10) NULL
    ) ON [PRIMARY]
    godeclare @id1 int,@id2 int
    insert into tab_a values ('111')
    select @id1 =@@identityinsert into tab_b values ('222')
    select @id2 =@@identityprint @id1
    print @id2你可以得到@id1 为tab_a 添加的自动id
             @id2 为tab_b 添加的自动id