【问题标题】:MS SQL 2005 Auto Increment ErrorMS SQL 2005 自动增量错误
【发布时间】:2015-09-16 16:29:32
【问题描述】:

所以,我尝试在我的数据库“Test”中创建一个表,

CREATE TABLE TestTbl(
id INT IDENTITY(1,1),
Agent_id VARCHAR(255) NOT NULL
)

创建后,我尝试通过php为代理添加2个值,结果是这样的:

id | Agent_id
0     8080
0     8081

它不会自动递增,即使我将'id'设置为主键,仍然会出现问题,有人知道如何解决这个问题吗?

这是我在 php 中的插入语句,别管$conn,因为它有效,它是用于我的 sql 连接

 if(isset($_POST['agentid'])){
    $agent = $_POST['agentid'];
    $query = "SELECT * FROM [Test].[dbo].[TestTbl] WHERE [Agent_id] = '$agent'";
    $result = sqlsrv_query($conn,$query);
      if(sqlsrv_has_rows($result) !=0){
    echo "ID EXISTS";
       }else{
    $sql = "SET INDENTITY_INSERT TestTbl ON
    INSERT INTO [Test].[dbo].[TestTbl]
    ([id],[Agent_id]) VALUES ('','$agent')
    SET IDENTITY_INSERT TestTbl OFF";
    echo "Added";
    }}

【问题讨论】:

  • 完整的插入语句是什么?
  • 等等,我将编辑我的帖子并添加插入语句。 :)
  • 我运行了您的创建表脚本,进入编辑状态,并添加了 2 条记录,这两条记录都自动递增。 (SQL 2014)但这在 2005 年应该没有什么不同......奇怪。
  • 嗯,我不知道我的 MS SQL 2005 有什么问题..
  • 嘿 :) 我在我的 SQL 中尝试过,它会自动递增,我猜错误是我的 INSERT 脚本

标签: php sql sql-server tsql sql-server-2005


【解决方案1】:

改变这部分

来自

INSERT INTO [Test].[dbo].[TestTbl]
    ([id],[Agent_id]) VALUES ('','$agent')

INSERT INTO [Test].[dbo].[TestTbl]
    ([Agent_id]) VALUES ('$agent')

当它是自动递增时,您无需在 INSERT 语句中指定。

当您想使用表格的自动增量功能时,也不要SET IDENTITY_INSERTOFF

SET IDENTITY_INSERT 允许将显式值插入到表的标识列中。

您的完整查询

 if(isset($_POST['agentid'])){
    $agent = $_POST['agentid'];
    $query = "SELECT * FROM [Test].[dbo].[TestTbl] WHERE [Agent_id] = '$agent'";
    $result = sqlsrv_query($conn,$query);
      if(sqlsrv_has_rows($result) !=0){
    echo "ID EXISTS";
       }else{
    $sql = "INSERT INTO [Test].[dbo].[TestTbl]
    ([Agent_id]) VALUES ('$agent')";
    echo "Added";
}}

【讨论】:

  • 您好,我试过了,但出现错误提示。 VALUES 子句中的值数必须与插入语句中指定的列数相匹配。我需要将 id 作为主键吗?
  • 不需要。确保这部分([Agent_id]) VALUES ('$agent')。两者都应该只有 1 个值,因为 Id 是标识并自动插入。
  • 是的,你可能离开了 ([id],[Agent_id]) 而不仅仅是 ([Agent_id])
  • 哦,我已经看到了,我的错,忘记删除''..感谢您的回答..问题已解决。感谢cmets! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2019-01-31
相关资源
最近更新 更多