我看到一个程序中有一段代码:insert into mytable values(?, ?, ?, ?, ?)。
其中表中id是自增字段,但values中并没有id的值,这个例子程序用的数据库是SQL Server 2000。
我现在用的是PostgreSQL数据库,id字段设为serial类型,
运行时会出错,因为它把values中的第一个值赋给了id,而第一个值的类型是varchar。我想问下,用PostgreSQL能不能实现这种操作,还是SQL Server 2000中的这个操作是错误的?
谢谢!

解决方案 »

  1.   

    加列名
    insert into mytable(列名) values(?, ?, ?, ?, ?)
      

  2.   

    谢谢。
    我知道加列名可以,但如果列比较多的话就又要写好多的代码。
    我看到这个程序可以不用加列名就可以实现,不知道在PostgreSQL中行不行。
      

  3.   

    那条语句在sql server中没错,因为sql server不允许对自增字段赋值
    但在postgresql中可以,所以给id赋default可以确保自增字段的正确赋值
      

  4.   

    谢谢!
    我将id的default值设为1,可还是不行,还是提示“...”不是Integer。
      

  5.   

    不是改id的default值,而是在insert语句的values中id字段的位置赋default
    比如id字段在第一个,就这样写:
    insert into mytable values(default, ?, ?, ?, ?, ?)
      

  6.   

    是6个字段吧,
    在MSSQL你填5个字段,可以通过,Postgresql就不行了。
    是这样的吧。那你就:
    insert into mytable values (DEFAULT,?, ?, ?, ?, ?)。