1

我正在尝试在 SQL Server 中创建一个数据库,但它不断抛出错误。你能看看剧本,看看我是不是把它搞砸了吗?

  drop database if exists cptc;

create database cptc;

use cptc;

drop table if exists staff;

create table staff (
  staffID int not null auto_increment,
  fname varchar(25),
  lname varchar(25),
  title varchar(50),
  phone varchar(10),
  building varchar(10),
  room varchar(10),
  PRIMARY KEY(staffID),
FULLTEXT (fname,lname)  
)ENGINE = MYISAM;

INSERT INTO staff VALUES ('','michael','herrera','doctor','2539703420','B14','122');
INSERT INTO staff VALUES ('','holly','herrera','teacher','2534667896','B35','116');
INSERT INTO staff VALUES ('','jesse','kirsch','professor','2534567890','B12','112');
INSERT INTO staff VALUES ('','mark','wahlberg','professor','5552345678','B01','112');
INSERT INTO staff VALUES ('','philip','spears','technician','2065672345','B12','123');
INSERT INTO staff VALUES ('','andrew','jackson','teacher','2061234567','B32','101');
INSERT INTO staff VALUES ('','annie','smith','mechanic','2533345609','B23','102');
INSERT INTO staff VALUES ('','alfred','hills','teacher','2535821513','B14','103');
INSERT INTO staff VALUES ('','bobby','jones','nurse','5559876056','B10','104');
INSERT INTO staff VALUES ('','tiffany','jones','janitor','2539981265','B02','108');

更新:我认为我遇到了错误,因为它是 MySQL 而不是 SQL。感谢大家的(非常快速的)答案!

4

3 回答 3

3

这部分是 MYSQL 不是 SQL Server ENGINE = MYISAM;

这是该表在 SQL Server 中的样子(没有全文索引,您首先需要启用全文搜索才能创建全文索引))

create table staff (
  staffID int not null identity,
  fname varchar(25),
  lname varchar(25),
  title varchar(50),
  phone varchar(10),
  building varchar(10),
  room varchar(10),
  PRIMARY KEY(staffID) 
)

删除和创建数据库将如下所示

USE [master]
GO

IF  EXISTS (SELECT name FROM sys.databases 
WHERE name = N'cptc')
DROP DATABASE cptc
GO

CREATE DATABASE [cptc] 

放置表将如下所示

IF  EXISTS (SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'staff') AND type in (N'U'))
DROP TABLE staff
GO

最后,您需要在插入时省略标识列,例如

INSERT INTO staff VALUES ('michael','herrera','doctor','2539703420','B14','122');

如果不省略该列,您将收到以下错误

消息 8101,第 16 层,状态 1,第 1 行

只有在使用列列表并且 IDENTITY_INSERT 为 ON 时,才能为表“staff”中的标识列指定显式值。

于 2012-05-18T14:30:50.500 回答
0
  • auto_increment 应该是 identity(1,1)
  • 引擎 = MYISAM;不存在你对它有什么期望?
  • FULLTEXT (fname, lname) 不正确。你想要什么,实现全文搜索?
于 2012-05-18T14:32:20.577 回答
0

问题不清楚。您正在创建一个表而不是数据库。如果您提供实际的错误详细信息,将会很有帮助。

顺便说一句,您不应该为服务器自动分配的自动增量列输入任何值。我想这是造成问题的原因。

于 2012-05-18T14:35:38.133 回答