【问题标题】:SQL Server : DEFAULT int value [closed]SQL Server:默认 int 值 [关闭]
【发布时间】:2018-03-23 17:45:08
【问题描述】:

我有一个 SQL 问题 - 这是我的表:

CREATE TABLE Compte
(
    Compte_Id             int not null IDENTITY (1, 1) primary key ,
    Compte_Nom            Varchar (25) ,
    Compte_Prenom         Varchar (25) ,
    Compte_Date_Naissance Date ,
    Compte_Rue            Varchar (25) ,
    Compte_Telephone      Varchar (25) ,
    Compte_Mail           Varchar (25) ,
    Compte_Pseudo         Varchar (25) ,
    Compte_MotDePasse     Varchar (25) ,
    Compte_Compte_Ogrine  Int DEFAULT 0,
    Compte_Argent_reel Int DEFAULT 0,
)

我想在我的 C# 程序中使用这个表,所以我的插入将如下所示:

INSERT INTO Compte ([Compte_Id], [Compte_Nom], [Compte_Prenom],
                    [Compte_Date_Naissance], [Compte_Rue], 
                    [Compte_Telephone], [Compte_Mail], [Compte_Pseudo],
                    [Compte_MotDePasse], [Compte_Compte_Ogrine],[Compte_Argent_reel])
VALUES ('ui', 'ui', '1996-06-25', 'ui', '09', 'ui', 'ui', 'ui')

但是如果我把它放在我的 SQL Server 上,它就不起作用了!

错误信息:

消息 109,第 15 级,状态 1,第 2 行
INSERT 语句中的列数多于 VALUES 子句中指定的值。

VALUES 子句中的值数必须与 INSERT 语句中指定的列数匹配。

【问题讨论】:

  • “INSERT 语句中的列数多于 VALUES 子句中指定的值”的哪一部分不明白?
  • 您不能(通常)自己插入身份字段,因此在要插入的列列表中包含 [Compte_Id] 是另一个问题。
  • 在此处发布之前始终使用 Google

标签: c# sql sql-server


【解决方案1】:

'INSERT 语句中的列多于比VALUES 子句中指定的值'

如果指定了列名那么必须为该列提供一个值

“修复”是删除要分配默认值的列名;这也包括任何标识列。

INSERT INTO Compte (
  -- Don't include this, identity column! [Compte_Id]
   [Compte_Nom]
  ,[Compte_Prenom]
  ,[Compte_Date_Naissance]
  ,[Compte_Rue]
  ,[Compte_Telephone]
  ,[Compte_Mail]
  ,[Compte_Pseudo]
  ,[Compte_MotDePasse])
  -- Don't specify, assume default value! ,[Compte_Compte_Ogrine]
  -- Don't specify, assume default value! ,[Compte_Argent_reel])
  VALUES
  ('ui','ui','1996-06-25','ui','09','ui','ui','ui')

【讨论】:

  • 哦,好吧!我知道你的意思,我也删除了 compte_id ,它起作用了!非常感谢!
  • @sok 那么请将响应标记为答案 - 这就是 SO 对寻找问题实际答案的人的工作方式..
【解决方案2】:

正如消息中所说的“还有更多列”,您的插入中有 11 列,但只有 8 个值。

不要在 insert 语句 (Compte_Id) 中包含 identity

【讨论】:

  • OP 在末尾还包括两个额外的“默认”字段,没有指定值。
  • 你是对的@user2864740,说得好
【解决方案3】:

INSERT 中的列数必须与 VALUES 中的列数匹配。 INSERT 中有 11 列,VALUES 中有 8 列。

另外,Compte_Id 是一个标识列,因此您不必在插入语句中为其指定值,因为 SQL Server 会自动为其设置值。

删除查询中的 [Compte_Id]、[Compte_Compte_Ogrine] 和 [Compte_Argent_reel]。

【讨论】:

    【解决方案4】:

    现在它可以正常工作了。

    INSERT INTO Compte ([Compte_Nom], [Compte_Prenom],
                    [Compte_Date_Naissance], [Compte_Rue], 
                    [Compte_Telephone], [Compte_Mail], [Compte_Pseudo],
                    [Compte_MotDePasse])
    VALUES ('ui', 'ui', '1996-06-25', 'ui', '09', 'ui', 'ui', 'ui')`
    

    【讨论】:

      猜你喜欢
      • 2014-10-24
      • 2014-08-18
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2015-11-12
      • 1970-01-01
      相关资源
      最近更新 更多