我在表中添加了一个计算字段,并且只想更新NULL
行(或“新”行)。出了点问题,DateTime
当插入 1 行时,我的表中的每一行都用当前更新。这是Create Table
语法,我必须做什么才能仅使用当前更新“新”行DateTime
CREATE TABLE [dbo].[SE](
[dbID] [int] IDENTITY(1,1) NOT NULL,
[uqID] [varchar](31) NOT NULL,
[POD] [varchar](255) NULL,
[EC] [varchar](255) NULL,
[S1] [varchar](35) NULL,
[S2] [varchar](35) NULL,
[S3] [varchar](35) NULL,
[S4] [varchar](35) NULL,
[S5] [varchar](35) NULL,
[S6] [varchar](35) NULL,
[S7] [varchar](35) NULL,
[PSD] [varchar](50) NULL,
[DS] [datetime] NULL,
[CN] [varchar](max) NULL,
[autodate] AS (getdate()),
PRIMARY KEY CLUSTERED
(
[dbID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = …
Run Code Online (Sandbox Code Playgroud) sql-server t-sql sql-server-2008-r2 default-value computed-column
注意:我不是 dba。:)
我有一个客户端需要设置列的默认值的数据库表。此表中有 150 万条以上的记录,并且此列已填充到所有现有记录中(他们现在手动执行此操作)。他们希望在其用户创建的所有新记录上自动设置此列。
在工作时间内设置此列的默认值是否会导致停机或任何重大延迟问题?
我是甲骨文新手。我需要将 SQL Server 命令移植到 Oracle。
我想更改列以添加具有默认值的新约束。
ALTER TABLE <schema_name>.<table_name>
ADD CONSTRAINT [<constraint_name>]
DEFAULT (1) FOR [<column_name>]
Run Code Online (Sandbox Code Playgroud)
ALTER TABLE <table_name>
ADD CONSTRAINT <constraint_name>
DEFAULT (1) FOR <column_name>
Run Code Online (Sandbox Code Playgroud)
运行 Oracle 查询时出现以下错误:
Run Code Online (Sandbox Code Playgroud)Error report - SQL Error: ORA-00904: : invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action:
可能是因为FOR
标识符无效?
但是如何为特定列添加具有默认值的约束呢?
我们是否需要更改列并设置默认值?
哪种方法是正确的?
声明默认列值时不允许使用列名。有没有解决方法来实现这样的目标?
CREATE TABLE [dbo].[Tasks]
(
[TaskId] INT IDENTITY(1,1) NOT NULL,
[TaskName] NVARCHAR(255) NULL,
[Priority] INT NOT NULL UNIQUE DEFAULT Max(Priority)+1, -- not allowed
)
Run Code Online (Sandbox Code Playgroud)
要求是默认情况下最新的任务获得最低优先级(最高 int 值)。在任务在表中之后,它可以被优先化/去优先化,例如优先级值与表中的任何其他任务交换。