2015-06-05 107 views
2

我目前正在嘗試做一個簡單的數據庫,但每次運行腳本時,它都會創建數據庫,但不會創建任何表,任何創意?SQL腳本不創建表

use master 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB 

CREATE DATABASE MyWebDB 
DROP TABLE Users 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 
DROP TABLE Downloads 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
); 
+3

你得到了降表的錯誤和腳本結束?如果你剛剛創建了整個數據庫,那麼這些表格如何存在? –

+2

'use master'是那裏的表格嗎? –

+2

看起來像你正在使用主,然後創建一個新的數據庫。您的表可能會轉到master數據庫而不是MyWebDB –

回答

3

擺脫你降表,並確保使用USE關鍵字和數據庫名稱更改數據庫環境。如果您想要像查詢數據庫一樣檢查表的存在,則查詢是否存在於sys.tables中。

USE master 
 
GO 
 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
 
DROP DATABASE MyWebDB 
 

 
CREATE DATABASE MyWebDB 
 
USE MyWebDB 
 
GO 
 
CREATE TABLE Users 
 
(
 
UserID int IDENTITY PRIMARY KEY, 
 
EmailAddress varchar(100) NOT NULL, 
 
FirstName varchar(50) NOT NULL, 
 
LastName varchar(50) NOT NULL, 
 
); 
 
CREATE TABLE Products(
 
ProductID int IDENTITY PRIMARY KEY, 
 
ProductName varchar(100) NOT NULL 
 
); 
 
CREATE TABLE Downloads(
 
DownloadID int IDENTITY PRIMARY KEY, 
 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
 
DownloadDate datetime NOT NULL, 
 
FileName varchar(100) NOT NULL, 
 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
 
);

+0

這樣做了,謝謝! – OysterMaker

+0

很高興幫助:) –

2
use master; 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB; 

CREATE DATABASE MyWebDB; 

-- added line 
USE MyWebDB; 

DROP TABLE Users; 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 

- 丟失; ?

DROP TABLE Downloads; 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
); 
+0

我所指的分號在Drop Table下載的末尾;在原文中,該行沒有分號。雖然,也可能也需要在其他drop table上使用它。刪除表用戶;刪除數據庫MyWebDB;和創建數據庫MyWebDB; –

+0

更重要的是,像Darren和Lain指出的那樣。創建後,您需要切換到WebDB數據庫。 –

+0

那麼,我需要更改使用master來使用MyWebDB? – OysterMaker

3
  1. 你有use master所以你的表可能去那裏。
  2. 在創建它之前,您將放棄Users表。 (由於你刪除了數據庫,所有的表都被隱式刪除)。
  3. 您在某些行末尾丟失了一些分號。
+0

試圖刪除不存在的表可能會導致錯誤,並且腳本的其餘部分不會執行。 – Tingo

2

我同意stazima,你設置數據庫爲主,所以你的表可能在那裏。

設置腳本來使用新的數據庫將有助於:

use master 
IF EXISTS(select * from sys.databases where name = 'MyWebDB') 
DROP DATABASE MyWebDB 

CREATE DATABASE MyWebDB; 
USE MyWebDB; 
GO 

DROP TABLE Users; 
CREATE TABLE Users 
(
UserID int IDENTITY PRIMARY KEY, 
EmailAddress varchar(100) NOT NULL, 
FirstName varchar(50) NOT NULL, 
LastName varchar(50) NOT NULL, 
); 
CREATE TABLE Products(
ProductID int IDENTITY PRIMARY KEY, 
ProductName varchar(100) NOT NULL 
); 
DROP TABLE Downloads; 
CREATE TABLE Downloads(
DownloadID int IDENTITY PRIMARY KEY, 
UserID int FOREIGN KEY REFERENCES Users(UserID), 
DownloadDate datetime NOT NULL, 
FileName varchar(100) NOT NULL, 
ProductID int FOREIGN KEY REFERENCES Products(ProductID) 
);