如何解决SSMS生成的命令ansi null,带引号的ident,ansi pad等的重要性是什么
| 这是从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,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
我仅使用SQL 2008 R2,而无需向后兼容。
我的问题是:以上内容是否出于实际目的可以省略?
解决方法
ANSI_NULLS http://msdn.microsoft.com/zh-CN/library/ms188048.aspx
您对过滤的索引,计算的列等没有做任何特别的事情,因此可以将其删除。
QUOTED_IDENTIFIER http://msdn.microsoft.com/en-us/library/ms174393.aspx
非常标准的名称,其中nary带有引号,因此在这里它的作用为零。
ANSI_PADDING http://msdn.microsoft.com/zh-CN/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
通常,您只有一个文件组,名为\“ PRIMARY \”,因此可以
索引选项是默认选项,仅在需要调整时才包含或更改它们
默认情况下,主键总是集群的,除非已经有另一个
唯一键是非群集的,因为主键已经群集
因为没有使用特殊名称,所以不需要[]
我在那儿丢了dbo.
,但是说实话,在99%的情况下也可以
没有指定者的IDENTITY是默认值(1,1)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。