【发布时间】:2019-07-04 12:08:30
【问题描述】:
我不想将 SQL Server 表的 ID 号设置为自动递增。所以我在我的 PHP 程序中设置了这个数字。我这样做的方法是获取表的当前 ID 值,然后对其添加+1,并将此数字插入表中。
示例:
$query = "SELECT MAX(ID) FROM T01";
$result=sqlsrv_query($conn, $query);
$IDTable = sqlsrv_fetch_array($result);
$Column1= getPOST('Column1' . $column);
$Column2= getPOST('Column2' . $Column);
$ID1 = $IDTable[0]+1;
$params = array(&$ID1,&$Column1,&$Column2);
# Statement
$sql = "INSERT INTO MyTable ([ID],[Column1],[Column2]) VALUES (?,?); SELECT SCOPE_IDENTITY();";
现在我有一个表格,在那个表格中,可以在 SQL 表(MyTable)中插入多于 1 行。现在发生的问题是,使用下面的代码会为所有插入的行提供相同的 ID。因此我收到一个错误,说重复的 ID 值。
我该如何克服这个问题?
【问题讨论】:
-
有什么理由不使用
IDENTITY()? -
如果你总是将 id 加一,你可以使用自动递增的 id
-
不要获取
MAX值并插入 +1。使用IDENTITY属性或SEQUENCE.。 -
所以如果这个应用程序的 2 个实例同时执行此操作,是否可以生成相同的密钥?也许这就是为什么
identity和sequences在哪里创建的?为什么不使用它们? -
我可以将 IDENTITY() 用于表中的 ID 列,但我在自动增加 ID 时遇到了一些问题,我想在程序中尝试一下。
标签: php sql-server database sql-insert