sql >> データベース >  >> RDS >> Mysql

ColdFusionとMySQLで挿入した後にテーブルIDを取得する

    パート1: SQLインジェクションのリスクを減らすために、個人的には1つのクエリ内で複数のステートメントをバッチ処理することはありません。これは、ColdFusionAdministratorのデータソース内の設定です。ストアドプロシージャを実行することは別の話ですが、それが意図されている場合は、質問を「mySQLストアドプロシージャで挿入した後に主キーを取得する」に言い換える必要があります。

    パート2: 多くの場合と同様に、ColdFusionを使用すると、自動インクリメントキー、GUID、またはOracleのROWNUMなどを使用している場合でも、新しく挿入されたレコードの主キーを非常に簡単に取得できます。これは、MSSQLやMySQLなど、AdobeColdFusionでサポートされているほぼすべてのデータベースで機能します。唯一の例外はデータベースのバージョンです。たとえば、MySQL3はこれをサポートしません。ただし、MySQL4以降はそうなります。

    <cfquery result="result">
      INSERT INTO myTable (
          title
      ) VALUES (
        <cfqueryparam value="Nice feature!" cfsqltype="cf_sql_varchar">
      )
    </cfquery>
    
    <--- get the primary key of the inserted record --->
    <cfset NewPrimaryKey = result.generatedkey>
    

    CF9 +以降、汎用キー名を使用して(任意のデータベースの)新しいIDにアクセスできます:

    result.GENERATEDKEY    // All databases
    

    CF8の場合、データベースが異なれば、結果値内のキーも異なります。 cfqueryのドキュメントからコピーした簡単な表を次に示します。

    result.identitycol    // MSSQL
    result.rowid          // Oracle
    result.sys_identity   // Sybase
    result.serial_col     // Informix
    result.generated_key  // MySQL
    

    質問がある場合は、次のようにかなりのダンプを見ることができます:

    <cfdump var="#result#" />
    


    1. Oracleで値に少なくとも1桁の数字が含まれているかどうかを検出する

    2. OracleEBSでXMLImporterとFndXdfCmpを使用する方法

    3. 列フィールドの2つの行の違いを取得するにはどうすればよいですか?

    4. C#でMysqlDBに接続する-データセットでいくつか必要