我有两个不同的事情要同时发生。基本上我需要在一个表中插入两个新的记录,如果它们还没有的话……可以肯定的是,它们将始终具有相同的ID和名称(我这样做了),但在此之后,我需要立即检查是否存在一个表,以及它是否没有创建它。(但如果它确实存在,我不想放弃它,就让它自己去吧)。
请参阅下面的代码。你能帮我检查一下桌子有没有存在吗?如果你看到一间正在改进的房间,请照办..
谢谢
--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
--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发布于 2011-09-29 22:53:46
据我所知,您必须先检查表是否存在,如果表不存在,则在插入之前创建它。希望下面的查询能对你有所帮助。
IF NOT EXISTS (SELECT * FROM SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[myTable]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
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]
END
IF NOT EXISTS (SELECT myID, myName FROM myTable WHERE myID = 7 AND myName = 'Pedro')
BEGIN
INSERT INTO myTable (myID , myName) values ( 7, 'Pedro')
END
IF NOT EXISTS (SELECT myID, myName FROM myTable WHERE myID = 8 AND myName = 'Joseph')
BEGIN
INSERT INTO myTable (myID , myName) values ( 8, 'Joseph')
END 编辑:还应该注意,如果不打开IDENTITY_INSERT,这将不起作用。因为myID列是一个标识字段,所以尝试插入的值将失败。
发布于 2011-09-29 23:00:22
用于插入记录的清理器脚本为:
IF NOT EXISTS (SELECT 1 FROM myTable WHERE ...)
BEGIN
-- Insert record
END并用于检查表是否存在:Check if table exists in SQL Server
IF (NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TheSchema' AND TABLE_NAME = 'TheTable'))
BEGIN
-- Insert table
END您可能希望更改这些语句的顺序,这样就不会查询可能不存在的表。
https://stackoverflow.com/questions/7599042
复制相似问题