MS SQL 2005自动增量错误

时间:2015-06-30 02:51:41

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

所以,我试图在我的数据库'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中的insert语句,没关系$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";
    }}

1 个答案:

答案 0 :(得分: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";
}}