以下是SSMS“Script Table as”生成的脚本 - >“Create To”:
USE [DADatabaseMarch11]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[LoginName](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](255) NOT NULL,
CONSTRAINT [PK_LoginName] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_LoginName] UNIQUE NONCLUSTERED
(
[name] 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
我只使用SQL 2008 R2而不需要向后兼容性。
我的问题是:上面有哪些内容,出于实际目的,可以省略吗?
答案 0 :(得分:4)
ANSI_NULLS http://msdn.microsoft.com/en-us/library/ms188048.aspx
您没有对过滤索引,计算列等做任何特殊操作,因此您可以删除它。
QUOTED_IDENTIFIER http://msdn.microsoft.com/en-us/library/ms174393.aspx
非常标准的名字,看起来没有引用,所以它在这里没有效果。
ANSI_PADDING http://msdn.microsoft.com/en-us/library/ms187403.aspx
此设置应始终开启。只有你出于任何原因将它设置为关闭时才需要它。即使这样,它也没有多大作用,因为即使你在LoginName.NAME,
中保留了尾随空格where name = 'abc' => will match 'abc ' (spaces stored)
len(name) = 3 => even if name is 'abc '
因为在整个SQL Server中,它已经使用尾随空格做了有趣的事情。
您需要的最低限度
CREATE TABLE dbo.LoginName(
id int IDENTITY NOT NULL,
name varchar(255) NOT NULL,
CONSTRAINT PK_LoginName PRIMARY KEY
(
id
),
CONSTRAINT IX_LoginName UNIQUE
(
name
)
)
GO
dbo.
,但说实话,在99%的情况下也可以这样做