簡體   English   中英

SQL 服務器的 ODBC 驅動程序 17 附近有錯誤的語法。 ''

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM