发布网友 发布时间:2022-04-13 12:12
共4个回答
懂视网 时间:2022-04-13 16:33
PERSISTED 指定 SQL Server 数据库引擎将在表中物理存储计算值,而且,当计算列依赖的任何其他列发生更新时对这些计算值进行更新。将计算列标记为 PERSISTED,可允许您对具有确定性、但不精确的计算列创建索引。有关详细信息,请参阅为计算列创建索引。用作
PERSISTED
指定 SQL Server 数据库引擎将在表中物理存储计算值,香港服务器,而且,香港服务器租用,当计算列依赖的任何其他列发生更新时对这些计算值进行更新。将计算列标记为 PERSISTED,可允许您对具有确定性、但不精确的计算列创建索引。有关详细信息,请参阅为计算列创建索引。用作已分区表的分区依据列的所有计算列都必须显式标记为 PERSISTED。指定 PERSISTED 时,computed_column_expression 必须具有确定性。
create table orders ( orderid , price , quantity , orderdate , total as price*quantity , total2 as Price * quantity persisted, shipedate as dateadd (day,7,orderdate) ) ) ,网站空间
热心网友 时间:2022-04-13 13:41
主键肯定不能为not null了- -热心网友 时间:2022-04-13 14:59
主键肯定不能为not null。
再一个就是看看是否有约束了。
ALTER TABLE 只可以添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;当然,如果前几个条件均未满足,表必须为空以允许添加此列。不能将列"xxx"添加到非空表"xx"中,它不满足上面条件。
alter table xx add 添加列表要是空的
指定列是否可接受空值。如果列不允许空值,则在指定了默认值或表为空的情况下,才能用 ALTER TABLE 语句添加该列。同时指定了 PERSISTED 时,才可以为计算列指定 NOT NULL。如果新列允许空值,但没有指定默认值,则新列在表中的每一行都包含一个空值。如果新列允许空值,并且指定了新列的默认值,就可以使用 WITH VALUES 将默认值存储到表中每个现有行的新列中。
如果新列不允许空值,并且表不为空,那么 DEFAULT 定义必须与新列一起添加;并且,加载新列时,每个现有行的新列中将自动包含默认值。
在 ALTER COLUMN 语句中指定 NULL,可以强制 NOT NULL 列允许空值,但 PRIMARY KEY 约束中的列除外。只有列中不包含空值的时候,才可以在 ALTER COLUMN 中指定 NOT NULL。须将空值更新为某个值后,才允许执行 ALTER COLUMN NOT NULL 语句,例如:
新建不能为空,故要先新建个可以为空的列。
然后强制为空。
下面代码以测试。
alter table 表名 add 列名 nvarchar(20) null
go
UPDATE 表名 SET stuName = N'some_value' WHERE 列名 IS NULL
ALTER TABLE 表名 ALTER COLUMN 列名 NVARCHAR(20) NOT NULL
go
热心网友 时间:2022-04-13 16:34
主键肯定不能为not null了- -
还有就是看看有没约束
ALTER TABLE 只允许添加满足下述条件的列: 列可以包含空值;或者列具有指定的 DEFAULT 定义;或者要添加的列是标识列或时间戳列;或者,如果前几个条件均未满足,则表必须为空以允许添加此列。不能将列"xxx"添加到非空表"xx"中,因为它不满足上述条件。
alter table xx add 添加列表要是空的
指定列是否可接受空值。如果列不允许空值,则只有在指定了默认值或表为空的情况下,才能用 ALTER TABLE 语句添加该列。只有同时指定了 PERSISTED 时,才能为计算列指定 NOT NULL。如果新列允许空值,但没有指定默认值,则新列在表中的每一行都包含一个空值。如果新列允许空值,并且指定了新列的默认值,则可以使用 WITH VALUES 将默认值存储到表中每个现有行的新列中。
如果新列不允许空值,并且表不为空,那么 DEFAULT 定义必须与新列一起添加;并且,加载新列时,每个现有行的新列中将自动包含默认值。
在 ALTER COLUMN 语句中指定 NULL,可以强制 NOT NULL 列允许空值,但 PRIMARY KEY 约束中的列除外。只有列中不包含空值时,才可以在 ALTER COLUMN 中指定 NOT NULL。必须将空值更新为某个值后,才允许执行 ALTER COLUMN NOT NULL 语句,例如:
因为新建不能为空所以要先新建个可以为空的列
然后强制为空
下面代码以测试
alter table 表名 add 列名 nvarchar(20) null
go
UPDATE 表名 SET stuName = N'some_value' WHERE 列名 IS NULL
ALTER TABLE 表名 ALTER COLUMN 列名 NVARCHAR(20) NOT NULL
go