我一直在關注如何創建表,如果它們不存在於當前DataBase中(爲了能夠在不同的數據庫中創建該表,並且可能不具有它們)以及發現,這兩項實用主題的在IF語句中間執行GO命令
所以我做了這個查詢
IF (NOT EXISTS (SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'EMAILCONTAS'))
BEGIN
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[EMAILCONTAS](
[NRSEQEMAILCONTAS] [numeric](8, 0) NOT NULL,
[CDEMAILCONTAS] [varchar](40) NULL,
[MSGEMAILCONTAS] [varchar](4000) NOT NULL,
[CCOEMAIL] [varchar](100) NULL,
[NRSEQOPERADORA] [numeric](8, 0) NOT NULL,
CONSTRAINT [PK_EMAILCONTAS] PRIMARY KEY CLUSTERED
(
[NRSEQEMAILCONTAS] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[EMAILCONTAS] WITH CHECK ADD FOREIGN KEY([NRSEQOPERADORA])
REFERENCES [dbo].[OPERADORA] ([NRSEQOPERADORA])
GO
ALTER TABLE [dbo].[EMAILCONTAS] WITH CHECK ADD CONSTRAINT [FK_EMAILCONTAS_OPERADORA] FOREIGN KEY([NRSEQOPERADORA])
REFERENCES [dbo].[OPERADORA] ([NRSEQOPERADORA])
GO
ALTER TABLE [dbo].[EMAILCONTAS] CHECK CONSTRAINT [FK_EMAILCONTAS_OPERADORA]
GO
END
但是當我執行它時,我在錯誤列表中找到了它。
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near 'ON'.
但無論如何創建我的表(我把「從PERSON選擇*」;上面的代碼後,檢查錯誤可能會阻止下一個腳本編譯或不和錯誤阻止它。 。顯示此錯誤:
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'Select'.
有一種方法,以避免它)?當我執行這個查詢和表已經存在時,我得到了以下錯誤。
Msg 102, Level 15, State 1, Line 5
Incorrect syntax near 'ON'.
Msg 2714, Level 16, State 6, Line 2
There is already an object named 'EMAILCONTAS' in the database.
Msg 2714, Level 16, State 5, Line 2
There is already an object named 'FK_EMAILCONTAS_OPERADORA' in the database.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.
我怎麼能做到這一點沒有得到這些錯誤?有沒有一種方法可以像這樣創建多個代碼而沒有問題?我究竟做錯了什麼?
非常感謝,這是有效的。我正在把你的答案作爲正確的答案,因爲「GO」的解釋 – 2012-07-30 13:33:53