一个表,主键自动生成,其他字段都有默认值,如何写insert语句才能使所有字段都使用默认值?sqlinsert默认值

解决方案 »

  1.   

    insert into tb(col1,col2,col3) values(default,default,default)
      

  2.   

    至少有一个非identity字段的值,lz需要给赋值(可以写成跟默认值一样)才行。
      

  3.   

    默认值其实可以覆盖的啊,那你可以这样写:
    insert into tb(非id列的所有列)
    values(这里对应的列,并且把相关的默认值直接写上去)
      

  4.   

    不知道lz是什么逻辑,如果除了标识列其他全部都有默认值的话,
    insert into tb(非标识列的其中一个列) values(default)
    只标明一个列即可实现全部列插入默认值
      

  5.   

    不要那么急于推翻需求
    我的系统允许用户通过程序对数据库元数据进行修改,设计实现目的是记录对元数据的操作日志,时间戳、操作的表名、列名、当前用户名等等字段都是取自默认值中的元数据的系统函数,程序当用户对数据库的任何元数据更改时进行insert记录,我请问这全表默认值怎么就不合理了?
    我只是认为写default多余,不过如果没别的办法,那就只能写了...
      

  6.   

    数据库实例可能是不同类型的,比如mySql、SqlServer、DB2等等,默认值都是取自数据库系统自身的函数,而不是我给的,insert的时候我也不知道运行值是什么。认为不合理可以,但必须给出更合理的解决方案,否则你的话会显得很没有说服力。
      

  7.   

    每个dbms都有自己的系统函数,你这样不是每个dbms都要改吗?我也不觉得你这个是好的方案啊。你要获取系统信息,那就直接用:
    insert into xxxx
    select username(),getdate(),xxxx
    这种方式来就行拉,上面是SQLServer的。
      

  8.   

    另外,我不懂其他dbms,就SQLServer而言,
    1:你改不了元数据。
    2:高版本的SQLServer可以直接读dmo(dmv+dmf)。
    3:2008可以用ddl触发器,这个我已经部署在我们公司的正式环境,而且几乎就没用到什么默认值,只是读取系统函数插入表里面,比如getdate()、username()、DB_ID()等等。
      

  9.   

    正因为每个dbms都有自己的系统函数,所以我才不能在insert时给出,而是通过默认值的形式,因为dba会根据数据库的类型配置这些默认值,我只是insert而已。如果按你这样我还得获取dbms的类型和系统函数表,那不是更麻烦么?
    为啥我改不了元数据?要作的是记录元数据的修改日志,而不是禁止元数据修改。
      

  10.   

    终于给我从几千个贴里翻出来了,这是最接近你要的东西了:
    insert into  [tb] default values  
      

  11.   

    这的确很好用,比之前的简洁多了,这是一种T-SQL写法么?我去找个小本本记下来
      

  12.   

    我之前见过,然后花了半个小时翻了几千个贴找出来的累死我了,原帖地址,看11楼:
    http://bbs.csdn.net/topics/390314499