我想在CREATE TABLE语句中以符合ANSI的方式创建命名默认值
如果我尝试像往常那样在ALTER TABLE语句中添加CONSTRAINT,它将失败(至少在SQL SERVER中,尽管我强调我希望找到ANSI投诉语句,因为我希望它能在多种情况下使用Ado.NET DbConnections)。
例:
CREATE TABLE [dbo].[MyExample]
(
Id int NOT NULL IDENTITY (1, 1),
Name varchar(512) NOT NULL,
IsActive bit NOT NULL,
CONSTRAINT PK_MyExample PRIMARY KEY CLUSTERED (Id),
CONSTRAINT DF_MyExample_IsActive DEFAULT (1) FOR [IsActive]
)
Run Code Online (Sandbox Code Playgroud)
错误:
“ for”附近的语法不正确。
顺便说一下,就SQL-92标准而言,它既是ISO(I =国际),又是ANSI(A + American),但DEFAULT它并不是一个可以赋予名称的约束。在SQL-92中,DEFAULT只能与列定义一起内联定义,并且必须在数据类型和NOT NULL(如果使用)之间(例如,使用)
CREATE TABLE T (c INTEGER DEFAULT 1 NOT NULL UNIQUE);
Run Code Online (Sandbox Code Playgroud)
请注意,在您的小示例中,您有很多非标准语法:
bit空行为)int而不是INTEGER)IDENTITYCLUSTERED| 归档时间: |
|
| 查看次数: |
2227 次 |
| 最近记录: |