Transact-SQL 参考

CREATE SCHEMA

创建一个架构,并且可以在概念上将其看作是包含表、视图和权限定义的对象。

语法

CREATE SCHEMA AUTHORIZATION owner
    
[ < schema_element > [ ...n ] ]

< schema_element > ::=
    { table_definition | view_definition | grant_statement }

参数

AUTHORIZATION owner

指定架构对象所有者的 ID。此标识符必须是数据库中有效的安全帐户。

table_definition

指定在架构内创建表的 CREATE TABLE 语句。

view_definition

指定在架构内创建视图的 CREATE VIEW 语句。

grant_statement

指定授予用户或用户组权限的 GRANT 语句。

注释

CREATE SCHEMA 提供了在单个语句中创建表、视图以及授予对象权限的方法。如果在创建任何对象或授予任何权限(这些是在 CREATE SCHEMA 语句中指定的)时发生错误,则不会创建任何对象。

创建的对象不必按逻辑顺序出现,但引用其它视图的视图除外。例如,GRANT 语句可以在创建某个对象之前授予该对象的权限,CREATE VIEW 语句也可以出现在创建该视图所引用表的 CREATE TABLE 语句之前。同样,CREATE TABLE 语句中声明的外键可以指向后面指定的表。例外情况是,如果一个视图的选择语句引用另一个视图,则必须在指定引用视图之前指定被引用的视图。

权限

CREATE SCHEMA 权限默认授予所有用户,但是他们必须有权创建加入到架构中的对象。

示例
A. 在创建对象之前授权访问对象

下例显示在创建对象之前授予权限。

CREATE SCHEMA AUTHORIZATION ross 
GRANT SELECT on v1 TO public
CREATE VIEW v1(c1) AS SELECT c1 from t1
CREATE TABLE t1(c1 int)
B. 创建相互依赖的 FOREIGN KEY 约束

下例创建相互依赖的 FOREIGN KEY 约束。用其它方法完成由此 CREATE SCHEMA 示例实现的任务时,需要执行多个步骤。

CREATE SCHEMA AUTHORIZATION ross
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT REFERENCES t2(c1))
CREATE TABLE t2 (c1 INT PRIMARY KEY, c2 INT REFERENCES t1(c1))