>我的学生服务器上有一个数据库,如果我想使用 SQL 服务器 DBMS 访问数据库属性,我需要去我的大学,这很痛苦。我想知道是否可以通过对特定表使用 SQL 来更改标识规范?我无法插入到表中,因为这未被选择为是,我希望能够在家中进行这些更改,我可以这样做吗?
我正在研究如何访问表和更改一些属性,并遇到了这样的事情:
Set IDENTITY_INSERT TableName ON
我希望能够使用 php 脚本和一些 SQL 来做到这一点,如下所示:
$query = "IDENTITY_INSERT customers ON ";
$result = sqlsrv_query( $conn, $query, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if( $result === false)
{
echo "Error in query preparation/execution.'n";
die( print_r( sqlsrv_errors(), true));
}
else
{
echo'worked';
}
这行得通吗?
这是我这样做的粗略尝试:
<?php
$serverName = "servername";
$connectionInfo = array("UID" => "username", "PWD" => "password", "Database"=>"database");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false ) // note the format of ‘equals’
{
echo "Could not connect.'n";
die( print_r( sqlsrv_errors(), true));
}
$query = "SET IDENTITY_INSERT customers ON ";
$result = sqlsrv_query( $conn, $query, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if( $result === false)
{
echo "Error in query preparation/execution.'n";
die( print_r( sqlsrv_errors(), true));
}
else
{
echo'worked';
}
?>
谢谢。
IDENTITY_INSERT
是正确的语法,尽管您在用法中似乎错过了SET
关键字。请参阅此行:
$query = "IDENTITY_INSERT customers ON ";
更改为:
$query = "SET IDENTITY_INSERT customers ON ";
我解决了这个问题,它当然没有设置为身份规范是的。首先,我删除了表列 customerID,并使用以下查询重新创建它:
$query = "Alter table customers add customerID INT IDENTITY(1,1) not null";
这将再次创建列,但将其设置为标识 yes。
没有你的帮助,我不可能做到。
谢谢。