首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于更新行的查询,如果表不存在,则创建该表

用于更新行的查询,如果表不存在,则创建该表
EN

Stack Overflow用户
提问于 2011-09-29 22:41:41
回答 2查看 210关注 0票数 0

我有两个不同的事情要同时发生。基本上我需要在一个表中插入两个新的记录,如果它们还没有的话……可以肯定的是,它们将始终具有相同的ID和名称(我这样做了),但在此之后,我需要立即检查是否存在一个表,以及它是否没有创建它。(但如果它确实存在,我不想放弃它,就让它自己去吧)。

请参阅下面的代码。你能帮我检查一下桌子有没有存在吗?如果你看到一间正在改进的房间,请照办..

谢谢

代码语言:javascript
复制
--ADD LOCKS
BEGIN TRAN
IF EXISTS (SELECT myID, myName 
           FROM myTable
           WHERE myID = 7 AND myName = 'Pedro') 
               SELECT 1 
ELSE
      INSERT INTO myTable (myID , myName) values ( 7, 'Pedro')    

IF EXISTS (SELECT myID, myName 
           FROM myTable
           WHERE myID = 8 AND myName = 'Joseph') 
               SELECT 1 
ELSE
      INSERT INTO myTable (myID , myName) values ( 8, 'Joseph')    
COMMIT

--NOW BELOW I WANT TO DO THE CREATION OF A TABLE IF IT DOES NOT EXIST

不确定如何检查它..但知道如何创建IT

代码语言:javascript
复制
--IF TABLE DOES NOT EXIST DO THE FOLLOWING
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[myTable](
    [myID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar(MAX)] NOT NULL
 CONSTRAINT [PK_myTable] PRIMARY KEY CLUSTERED 
(
    [myID] 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

--ELSE DONT DO NOTHING
EN

Stack Overflow用户

发布于 2011-09-29 23:00:22

用于插入记录的清理器脚本为:

代码语言:javascript
复制
IF NOT EXISTS (SELECT 1 FROM myTable WHERE ...)
BEGIN
    -- Insert record
END

并用于检查表是否存在:Check if table exists in SQL Server

代码语言:javascript
复制
IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND  TABLE_NAME = 'TheTable'))
BEGIN
    -- Insert table
END

您可能希望更改这些语句的顺序,这样就不会查询可能不存在的表。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7599042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档