0

マージしようとしているテーブルにidentity(phpアプリケーションからの)列があるかどうかを調べようとしています。構築されているクエリは次のとおりです。

USE dhs;

select COLUMN_NAME as name 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_SCHEMA = 'dbo' 
and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1 
AND TABLE_NAME = 'orders'

これをManagementStudioで実行すると、の戻り値が得られますid(これは私が期待していることです)。ただし、アプリケーションから同じクエリを実行すると、何も返されません。データベースユーザーに完全なアクセス許可を与えたので、アクセス許可の問題になることはありません。以下は私が実行しているphpです(「id」を返す必要がありますが、現在falseを返します):

$array = empty($array) ? $_POST : $array; //if no array is passed, use post
        $info = self::information_schema($db, $schema, $table);
        $clean = array(); //the hex-exscaped key values pairs that are matched against the database column names (so only items whose key matches a column name are used)
        $primary = array();// ON section array
        $update = array(); //the array for elements to update, each position is set to target.$k = source.$k
        $insert = array(); //The insert string, which is essentially array_keys($clean) minus any identity field with source. prepended
        $fields = array(); //fields to insert to with no source. prepended and no identity fields included
        $query= "USE $db 
                                select COLUMN_NAME as name
                                from INFORMATION_SCHEMA.COLUMNS
                                where TABLE_SCHEMA = '$schema'
                                and COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1
                                AND TABLE_NAME = '$table'"; //this gets the identity column of table it has one (to prevent trying to insert into an IDENTITY field)
                    $handle = sqlsrv_query(self::$conn, $query);
        $value = sqlsrv_fetch_array($handle, SQLSRV_FETCH_NUMBERIC);
        var_dump($value);

INFORMATION_SCHEMASQL Serverでは、 SSMSの外部から選択することはできませんか?

4

0 に答える 0