insert table2 (Name,Date,Num) values (@Name,@Date,@Num)你所要赋的值
update table2 set vlaue = a.vlaue from table1 a, table2 b where a.name = b.name

解决方案 »

  1.   

    問題1:
    insert into table2(name,date,num) values(1,2,3)--插入數據
    insert into table2(values,vlues1...) (select a.value1,a.value2... from table2 a inner join table1 b on a.name=b.name)
    ---推薦,用觸發器自動完成(能輕鬆實現)
      

  2.   

    ----問題2-----------
    --當表字段太多,假設有n個,隻查詢前面m-n個的函數
    ---create by talantlee
    ---4/19/05
    ---測試:假如表a不超過nl列記錄就返回所有列記錄,超過就返回m-n列的記錄
    --
    --declare @a varchar(800)
    --set @a=dbo.select_ncolumn('student',1,5)--表名,起始,結束---樓主的列多的話,把5設置成大數
    --exec('select '+@a +' from student')---注意空格
    create  function select_ncolumn(@tname varchar(100),@m int,@n int)
    returns varchar(800)
    as
    begin
    declare @string varchar(500)
    declare  @i int,@maxcount int
    set @i =@m
    set @string =''
    select @maxcount=count(*) from syscolumns where id=object_id(@tname)
    if(@maxcount<@n)
    set @n=@maxcount
    while (@i<=@n)
    begin
    select @string=@string+','+name  from syscolumns where id=object_id(@tname) and colorder= @i
    set @i=@i+1
    end
    set @string=stuff(@string,1,1,'')return @string
    end
      

  3.   

    --問題三
    declare @name nvarchar(100)
    select  @name=name  from sysobjects where id in (select cdefault   from syscolumns where id=object_id('tablea'))
    exec('alter table tablea drop constraint '+@name)
      

  4.   

    问题1:
    我想你可以这样做:
    首先创建两个表,假设你的两个表结构是这样的。
    create table #table 
    (
    id int identity,
    name varchar(8) unique,
    value1 int,
    value2 int,
    value3 int
    )create table #table1(id int identity,
    name varchar(8) ,
    num int,
    date1 datetime,
    value1 int,
    value2 int,
    value3 int)然后向#table中添加几条记录:
    insert into #table values('c',43,14,33)
    insert into #table values('a',14,78,23)
    insert into #table values('b',77,22,66)要想实现你要的那种效果,我创建了一个存储过程
    create proc in1
    @name varchar(8),
    @num int,
    @date1 datetime
    as 
    insert into #table1(name,num,date1)
    values(@name,@num,@date1)
    update #table1 set value1=#table.value1,
    value2=#table.value2,value3=#table.value3
    from #table join #table1 on #table.name=#table1.name
    where #table.name=@name最后一步,要想向第二表#table1中添加记录时,就可以这样做
    exec in1 'a',666,'2001-12-01'这样就可以啦,你试一下吧
      

  5.   

    先谢谢楼上几位朋友的热心解答,不过问题1,2还是没有解决。
    问题1的难点在于,两个表的value字段在我编写代码时并不存在,它是用户在运行程序时自定义的。我在编程时并不知道用户会设置几个这样的字段以及各个字段的名称是什么。不过,我的数据库中有另外一个表中会保存value字段的名称
    table3
    [name]  
    value1    
    value2    
    value3    
    …… 问题2我想问的是对类似table2的表,字段数目不清楚,查询的时候用SELECT *可以将所有字段查询出来而不用管它有多少字段及各个字段是什么名称。但如果我不想在查询结果中包含num字段该如何做?
      

  6.   

    可能我的问题说得有点抽象,我就用具体实例说说。
    我在做一个工资管理系统,希望其中的工资项目能由用户自定义。其中有三个表
    工资项目表table3的字段是:
    [项目名称] [计算列] [计算公式]
    员工工资缺省值表table1的初始字段是:
    [员工编号]
    月工资表table2的初始字段是:
    [工资单号] [员工编号] [日期] 程序运行后,用户向table3中插入记录,程序自动在table1、table2中生成相应的字段。比如说table3中现在有如下记录
    [项目名称] [计算列] [计算公式]
    基本工资      0       NULL
    奖金          0       NULL
    保险金        0       NULL
    实发工资      1      基本工资+奖金-保险金
    则通过触发器,table1、table2的字段变为
    table1
    [员工编号][基本工资][奖金][保险金][实发工资]
    table2
    [工资单号] [员工编号] [日期][基本工资][奖金][保险金][实发工资]用户再给table1中的各个员工的工资项目设定不同的初始值,如
    table1
    [员工编号]基本工资][奖金][保险金][实发工资]
    NO_001      1000    200   100    1100
    NO_002      3200    500   100    3600
    NO_003      2500    1000  100    3400现在我希望在向table2插入记录时,能根据员工编号自动引用table1中的工资项目值