2017-09-21 2 views
0

저는 DNN 모듈 개발 및 Web dev에 일반적으로 익숙합니다. 모듈을 설치하는 동안 "ALTER TABLE"근처에서 구문 오류가 계속 발생합니다. 저는 Chris Hammond의 가이드에 설명 된 단계를 사용했습니다. DNN GuideDNN SQL 데이터 공급자 구문 문제

는 여기에 내가 문제가 테이블을 만드는 문 내에서 중첩 Alter 문이 있다고 생각 내 코드

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'{databaseOwner}[{objectQualifier}name_table]') and OBJECTPROPERTY(id, N'IsTable') = 1) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL, 

ALTER TABLE {databaseOwner}[{objectQualifier}name_table] ADD CONSTRAINT [PK_{databaseOwner}{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 

END 
GO 
+0

은 [스크린 샷]에 대해 자세히 살펴 (http://www.dnnsoftware.com/Portals/0/SiteFiles/Training/Mod-Dev-Blog-Series를 타고 /08/SQL-DataProvider-Install-Script.jpg) DNN Guide에서 create 테이블의 끝이','로 끝나지 않는 것을 볼 수 있습니다. – xQbert

+0

정말 고마워요! 문제를 일으켜서 미안 해요! –

답변

1

입니다. create table 내부의 제약 조건을 가지고 이와 같이되어야합니다.

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwner}[{objectQualifier}name_table]') AND type in (N'U')) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL, 
CONSTRAINT [PK_{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 
) 
END 
GO 

또는 별도의

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'{databaseOwner}[{objectQualifier}name_table]') AND type in (N'U')) 
BEGIN 
CREATE TABLE {databaseOwner}[{objectQualifier}name_table](
    [file_name] [nchar](50) NOT NULL, 
    [guid_key] [uniqueidentifier] NOT NULL 
) 
END 
GO 

ALTER TABLE {databaseOwner}[{objectQualifier}name_table] ADD CONSTRAINT [PK_{databaseOwner}{objectQualifier}name_table] PRIMARY KEY CLUSTERED ([guid_key]) 
GO