我想创建一个自动递增主键的表,如果没有输入任何列,则将所有值设置为默认值。当我没有自动增量但它现在无法工作时,它工作。我需要做些什么来改变“空”字。出现在单元格中。
代码在这里:
create table Persons
(
P_Id int IDENTITY(1,1) primary key,
LastName varchar(55) default 'Empty',
FirstName varchar(55) default 'Empty',
Address varchar(55) default 'Empty',
City varchar(55) default 'Empty'
)
表:
1 l f a c
2 k l l
NULL j k NULL NULL
NULL NULL NULL NULL NULL
不使用自动增量工作:
5 Empty Empty Empty Empty
NULL NULL NULL NULL NULL
这样就可以了:
CREATE TABLE [dbo].[AAA](
[P_Id] [int] NOT NULL primary key,
[LastName] [varchar](55) default 'E',
[FirstName] [varchar](55) default 'E',
[Address] [varchar](55) default 'E',
[City] [varchar](55) default 'E'
)
工作代码:
CREATE TABLE Pers
(
P_Id int primary key NOT NULL,
LastName varchar(55) DEFAULT 'A',
FirstName varchar(55) DEFAULT 'B',
Address1 varchar(55) DEFAULT 'C',
City varchar(55) DEFAULT 'D' <-- This Will Work (actual all of them do)
)
如果设置了身份(1,1),为什么它们不起作用?我需要一个主键,然后我想将字段设置为E为空或任意值。
答案 0 :(得分:0)
尝试此代码不允许 null 值
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Persons](
[P_Id] [int] IDENTITY(1,1) NOT NULL,
[LastName] [varchar](55) NOT NULL,
[FirstName] [varchar](55) NOT NULL,
[Address] [varchar](55) NOT NULL,
[City] [varchar](55) NOT NULL,
CONSTRAINT [PK__Persons__A3420A572F10007B] PRIMARY KEY CLUSTERED
(
[P_Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[Persons] ADD CONSTRAINT [DF__Persons__LastNam__30F848ED] DEFAULT ('Empty') FOR [LastName]
GO
ALTER TABLE [dbo].[Persons] ADD CONSTRAINT [DF__Persons__FirstNa__31EC6D26] DEFAULT ('Empty') FOR [FirstName]
GO
ALTER TABLE [dbo].[Persons] ADD CONSTRAINT [DF__Persons__Address__32E0915F] DEFAULT ('Empty') FOR [Address]
GO
ALTER TABLE [dbo].[Persons] ADD CONSTRAINT [DF__Persons__City__33D4B598] DEFAULT ('Empty') FOR [City]
GO