好的我想创建一个表
TABLE log_table
email nvarchar(255)
,salesrep nvarchar(20)
,blastid int
,timestamp datetime
现在timestamp
的默认值是插入记录的日期时间,我希望主键位于email
和blastid
上。
我知道你可以使用聚簇索引来完成它,但我不确定如何实现这一点的语法。请,任何帮助将不胜感激。我正在使用SQL Server Management Studio 2008
答案 0 :(得分:2)
CONSTRAINT PK_LOG_TBL PRIMARY KEY CLUSTERED (email ASC, email ASC)
答案 1 :(得分:2)
CREATE TABLE dbo.log_table
(
email nvarchar(255) NOT NULL,
salesrep nvarchar(2) NULL,
blastid int NOT NULL,
timestamp datetime NULL
)
ALTER TABLE dbo.log_table ADD CONSTRAINT
DF_log_table_timestamp DEFAULT GetDate() FOR timestamp
ALTER TABLE dbo.log_table ADD CONSTRAINT
PK_log_table PRIMARY KEY CLUSTERED
(
email,
blastid
)
GO
如果您使用的是创建表格GUI,则可以在单击列时使用控件设置为主键。
答案 2 :(得分:1)
CREATE TABLE log_table (
email NVARCHAR(255) NOT NULL,
salesrep NVARCHAR(255),
blastid INT,
[timestamp] DATETIME,
PRIMARY KEY (email, blastid)
)
我相信时间戳默认值是在插入时使用'GETDATE()'完成的。
答案 3 :(得分:1)
您需要创建复合主键。语法如下:
CREATE TABLE log_table
(
email nvarchar(255),
salesrep nvarchar(20),
blastid int,
timestamp datetime,
PRIMARY KEY (email, blastid)
)
答案 4 :(得分:1)
我会使用其他东西而不是“timestamp” - 这是一个sql server数据类型。
create table log_table
(
email nvarchar(255) not null
,salesrep nvarchar(20)
,blastid int not null
,timestamp datetime default getdate())
ALTER TABLE dbo.log_table ADD CONSTRAINT
PK_log_table PRIMARY KEY CLUSTERED
(
email, blastid
) WITH( STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]