2010-11-26 14 views
0

Ich benutze SQL Server 2008 Management Studio. Ich versuche, zwei scheinbar einfache Tabellen zu erstellen, bekomme aber diesen Fehler bei der Ausführung. Ich habe versucht, die Namen dieser Tabellen in viele verschiedene Variationen zu ändern. Nichts hilft. Hier unten ist was ich tippe. HierMSG 2714 Es gibt bereits ein Objekt namens

USE POS410; 
go 

CREATE TABLE [empl] 
(
employeeID INT NOT NULL, 
lname VARCHAR(15) NOT NULL, 
fname VARCHAR(15) NOT NULL, 
address VARCHAR(20) NOT NULL, 
city VARCHAR(15) NOT NULL, 
state VARCHAR(10) NOT NULL, 
areacode INT NOT NULL, 
tnumber INT NOT NULL, 
EEO1classification VARCHAR(10) NOT NULL, 
hiredate DATE NOT NULL, 
salary INT NOT NULL, 
gender VARCHAR(1) NOT NULL, 
age INT NOT NULL, 
clocknumb INT NOT NULL, 
PRIMARY KEY(employeeID), 
UNIQUE(employeeID), 
UNIQUE(clocknumb), 
FOREIGN KEY(clocknumb) REFERENCES [jb_ttl](Empnum), 
); 
go 

CREATE TABLE [jb_ttl] 
(
EEO1 VARCHAR(10) NOT NULL, 
JobTitle VARCHAR(15) NOT NULL, 
JobDscrpt TEXT NOT NULL, 
ExemptNonExemptStatus VARCHAR NOT NULL, 
Empnum INT NOT NULL, 
PRIMARY KEY (Empnum), 
); 
go 

ist der Fehlerbericht

+0

Was passiert, wenn Sie das Problem etwas eingrenzen? Vielleicht nur eine Tabelle erstellen? Vielleicht ein paar Spalten lassen? –

+2

Entschuldigung, wo ist der Fehlerbericht? – Brandon

+1

Eine vollständige Fehlermeldung wäre hilfreich. – Donnie

Antwort

1

Ich würde sagen, Sie haben versucht, dieses Skript mehr als einmal ausgeführt werden. Es wäre beim ersten Mal fehlgeschlagen, weil Sie versuchen, die erste Tabelle mit einem Fremdschlüssel für die zweite zu erstellen, die noch nicht existiert. Ich benutze das Wort "nicht", denn wenn meine Vermutung richtig ist, tut es das jetzt, und deshalb erhält man den Fehler "Objekt existiert schon".

Als Nebenbemerkung hat SQL das Wrapping von DDL (Erstellen/Ändern von Objekten) mindestens bis 2005 unterstützt. Normalerweise wickle ich Tabellenänderungen in Transaktionen ein und übergebe die Transaktion erst, wenn alles ohne Fehlermeldungen abläuft .

+0

Sie haben Recht. Ich habe versucht, die beiden Tische gleichzeitig mit der fk-Relation auf einmal zu erstellen. Ist das das Problem? – winkyloCC

+0

Es hätte funktioniert, wenn du zuerst die create-Anweisung für jb_ttl hättest. –

+0

Ich habe die Jobtiteltabelle gelöscht und die Mitarbeitertabelle in Jobholder geändert und jblhder kurz verwendet. Es war erfolgreich. – winkyloCC

0

diesen einen Lauf geben, um zu bestätigen, ob jb_ttl bereits vorhanden ist:

select * from master.dbo.sysobjects where [name] = 'jb_ttl' 

, die Ihnen zeigen, wenn anb Objekt mit dem Namen jb_ttl bereits vorhanden ist. Könnte es vielleicht schon als Prozedur oder Auslöser existieren?

+0

Ich ging voran und änderte die Namen. Gibt es eine Möglichkeit, die auf diese Weise erstellten Tabellen zu öffnen (T-sql)? – winkyloCC

Verwandte Themen