sql - “ON [PRIMARY]”和“WITH”语句在SQL Serer中创建表和约束的作用是什么?
问题描述
这两种制作表格和约束的方式有什么区别?
1.
CREATE TABLE [myDB].[dbo].[myTable]
(
[ID] [int] NOT NULL,
[Name] [Varchar] (50) NOT NULL,
CONSTRAINT [PK_myTable] PRIMARY KEY CLUSTERED ([ID] DESC ) WITH ( IGNORE_DUP_KEY = ON) ON [PRIMARY],
UNIQUE ([Name]) WITH ( IGNORE_DUP_KEY = ON)
) ON [PRIMARY]
CREATE TABLE [myDB].[dbo].[myTable]
(
[ID] [int] NOT NULL,
[Name] [Varchar] (50) NOT NULL,
PRIMARY KEY ([ID] DESC ),
UNIQUE ([Name])
WITH ( IGNORE_DUP_KEY = ON)
)
在第二种形式中,省略了“CONSTRAINT [PK_myTable]”。它只影响约束的自动名称选择吗?“CONSTRAINT”这个词有必要吗?此外,省略了两个“ON [PRIMARY]”。我认为这会改变保存表格和约束的位置。如果你不写任何“ON...”或只写其中一个会发生什么?同样在后一个中,“WITH”语句只声明了一次。它适用于这两种约束吗?或者他们每个人都必须有自己的“WITH”声明?你能告诉我这两种创建表格的方法的所有实际区别吗?
解决方案
默认情况下,创建数据库时会创建PRIMARY
文件组,并且所有表都存储在该文件组中。
默认情况下PRIMARY KEY
不添加,您应该显式设置此约束。
因此,当您创建如下查询时:
CREATE TABLE MyTable
(
Id int NOT NULL,
Name varchar (50) NOT NULL
);
这在后面自动转换:
CREATE TABLE MyTable
(
Id int NOT NULL,
Name varchar (50) NOT NULL
) ON [PRIMARY];
推荐阅读
- sql - SQL Server:按列值查找重复记录
- c# - 如何使用 iTextSharp 创建 PDF 模板
- c# - 如何在 C# 中读取文本文件到数据表
- mysql - Mysql select查询说明
- python-3.x - keyPressEvent 在我的 PyQt 应用程序中不起作用
- c++ - 复制向量
元素到其他其他向量 *(1作为指针传递) - list - 基于段选择的两个不同实体的列表
- react-native - axios 响应返回对象而不是数组
- collections - 将数据表中的列中的数据添加到 Power Apps 中的集合
- php - 如何对 laravel 雄辩的子关系进行排序并获取有序的父数据