表:tbUserInfo(Name,Birthday,Age)
当我在表里插入数据时,插入Birthday时,它会与当前的时间计算,将计算的时间差(年)插入到字段Age,请问我用触发器该如何实现啊??
或者不用触发器也可以,请教了!

解决方案 »

  1.   

    age as datediff(year,birthday,getdate())
      

  2.   

    可以在后台代码处理
    在添加用户信息的时候可以对Age进行计算
    获取当年的年份减去Birthday的年份得到Age进行数据的添加。
      

  3.   

    CREATE TABLE #tbUserInfo
    (
    [Name] VARCHAR(10),
    Birthday DATETIME,
    Age INT
    )
    GO
    --SQL:
    INSERT #tbUserInfo
    (
    [Name],
    Birthday,
    Age
    )
    SELECT
    'a',
    '1980-01-01',
    DATEDIFF(YEAR, '1980-01-01', GETDATE())
    --RESULT
    SELECT * FROM #tbUserInfo
    /*
    Name       Birthday                Age
    ---------- ----------------------- -----------
    a          1980-01-01 00:00:00.000 31
    */
      

  4.   

    SELECT
    'a',
    '1980-01-01',
    YEAR(GETDATE())-YEAR('1980-01-01')
      

  5.   

    这个表设计有问题,正确来说,有Birthday就不应该再有age字段出现,反之一样。
      

  6.   

    参考:
    http://www.cnblogs.com/insus/articles/2019995.htmlŒ