2011-01-19 5 views
2

테이블을 감안할 때 :새로 생성 된 레코드의 ID (PK)를 얻는 방법은 무엇입니까?

CREATE TABLE [GENERIC_TABLE] (
    [RECORD_ID] [int] IDENTITY(1,1) NOT NULL, 
    [SHORT_DESC] [varchar] (50) NULL, 
CONSTRAINT [PK_GENERIC_TABLE] PRIMARY KEY CLUSTERED 
... 

내가 기록을 삽입하여 ColdFusion 변수에 새 RECORD_ID의 가치를 얻을 싶어요.

제 CFQUERY는 어떻게 생겼습니까?

은 (인정 하듯이,이. 내 방어에서 나는 오라클과 협력하지 SQL 서버를 사용하고 있습니다. 아마 너무 쉬운 질문이다) ColdFusion에서 8

이 있지만 버전 중립적 인 솔루션은 좋다. 당신이 cfquery 태그의 결과 속성을 설정하면

답변

12

가 기본 키 추가 SQL없이 반환

<cfquery datasource="x" result="resultName"> 
INSERT INTO... 
</cfquery> 

<cfset newID = resultName.IDENTITYCOL /> 
  • MSSQL : IDENTITYCOL
  • 오라클 : ROWID
  • 베이스 : SYB_IDENTITY
  • 인포믹스 : SERIAL_COL
  • Mysql : GENERATED_KEY
+3

resultName.generatedkey는 CF9 – Henry

+0

의 모든 DB에 대해 더 잘 작동합니다! 온라인 문서에서 생략 된 것을 볼 수 있습니다. – jamckinn

+0

ColdFusion 8은 어떻습니까? – ale

1

어떤 이유로 행을 복제 할 때 결과를 사용할 수 없습니다. 여기에 내가 찾은 해결책이있다. (구문, SQL Server 고유 구문)

<cfquery name="dupRecord" datasource="#application.dsn#" result="dupResult"> 
    SET NOCOUNT ON; 

    INSERT INTO dataProjects (DraftId,PublishStatus,ProjectName) 
    SELECT 0,'draft',ProjectName 
    FROM dataProjects 
    WHERE projectId = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#arguments.projectId#">; 

    SELECT SCOPE_IDENTITY() AS RecordID; 
</cfquery> 
<cfset dupProjectId = dupRecord.RecordID> 
관련 문제