![](/img/trans.png)
[英]SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Incorrect syntax near '`'
[英]ODBC Driver 17 for SQL Server incorrect syntax near . ''
我正在尝试使用 php 在 MS SQL 服务器管理 17 中创建表。
我的查询是:
$mid=$row['MASTER_ID'];
echo $mid;
$table_solution="CREATE TABLE Q_MASTERID_'$mid'_Solution(
MASTER_ID INT ,
PRODUCT_NAME varchar(255),
CUSTOMER_NAME varchar(255),
Q_TEMP_ID INT IDENTITY(1,1),
Q_DESC nvarchar(600) NULL,
Q_CATEGORY nvarchar(255) NULL,
Q_SUB_CATEGORY nvarchar(255) NULL,
SCOPE nvarchar(255) NULL
) ON PRIMARY";
$solution_alter="ALTER TABLE Q_MASTERID_'$mid'_Solution ADD Q_ID AS CONCAT ('A',CAST(Q_TEMP_ID AS VARCHAR(100)))PERSISTED" ;
$res=sqlsrv_query($con,$table_solution) or die("Couldn't execute create query".print_r(sqlsrv_errors(), true));
$res1=sqlsrv_query($con,$solution_alter) or die("Couldn't execute alter query");
我收到以下错误:
无法执行 create queryArray ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 102 [code] => 102 [2] => [Microsoft][ODBC Driver 17对于 SQL 服务器][SQL Server]'' 附近的语法不正确。[消息] => [Microsoft][用于 SQL 服务器的 ODBC 驱动程序 17][SQL Server]'' 附近的语法不正确。))
如果我在创建查询中删除 $mid,我会收到以下错误
无法执行 create queryArray ( [0] => Array ( [0] => 42000 [SQLSTATE] => 42000 [1] => 156 [code] => 156 [2] => [Microsoft][ODBC Driver 17对于 SQL 服务器][SQL Server]关键字'PRIMARY'附近的语法不正确。[消息] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]关键字'PRIMARY'附近的语法不正确。))
我想在创建表“CREATE TABLE Q_MASTERID_'$mid'_Solution”时添加名为 $mid 的动态变量帮助我解决这个问题......
我认为您正在尝试:
CREATE TABLE Q_MASTERID_Solution (
MASTER_ID INT ,
PRODUCT_NAME varchar(255),
CUSTOMER_NAME varchar(255),
Q_TEMP_ID INT IDENTITY(1,1),
Q_DESC nvarchar(600) NULL,
Q_CATEGORY nvarchar(255) NULL,
Q_SUB_CATEGORY nvarchar(255) NULL,
COPE nvarchar(255) NULL ,
Q_ID AS ( CONCAT('A', CAST(Q_TEMP_ID AS VARCHAR(100))) ) PERSISTED
) ON "default"
我认为没有理由包含ON "default"
,因为如果没有指定,那是默认的分区方案。 如果您确实指定了一个,那么您需要指定一个现有的。
您可以在名称中包含q_id
的定义。
创建具有相同架构的多个表是一种非常糟糕的做法。 相反,将MASTER_ID
作为列包含在表中并针对每个主 ID 进行过滤。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.