2017-06-02 62 views
1

我试着去创建一个名为“Receita”,其中包含来自一个名为FarmacoSQL创建一个表

但对于原因,我不断收到此错误并表的外键的表我不是真的拿起它

"There is already an object named 'Farmaco' in the database." 

继承人其中i创建两个表鳕

if not exists (select * from dbo.sysobjects 
       where id = object_id(N'[dbo].[Receita]')) 

begin 
    CREATE TABLE Receita(
     IDReceita int NOT NULL 
      CHECK(IDReceita>0), 
     IDFarmaco int, 

    CONSTRAINT PK_IDReceita PRIMARY KEY (IDReceita), 
    CONSTRAINT FK_IDFarmaco FOREIGN KEY (IDFarmaco) 
     REFERENCES Farmaco (IDFarmaco) 
     ON UPDATE CASCADE, 
); 
end 

if not exists (select * from dbo.sysobjects 
       where id=object_id(N'[dbo.Farmaco]')) 
begin 
    CREATE TABLE Farmaco(
     IDFarmaco int NOT NULL 
     CHECK(IDFarmaco>0), 
     IDMedico int, 
     Tipo varchar(50) 

    CONSTRAINT PK_IDFarmaco PRIMARY KEY (IDFarmaco), 
    CONSTRAINT FK_IDMedico7 FOREIGN KEY (IDMedico) 
     REFERENCES Médico (IDMedico) 
     ON UPDATE CASCADE, 
); 
end 

谢谢

+1

对象不需要是表格。 –

+0

问题是:我已经做了5或6个表格,使用相同的代码(具有不同的名称的c),它运行良好,当我这样做时,出现了一个错误,我不知道什么是错的 –

+0

您可以选择sysobjects找到'Farmaco'是... – TriV

回答

0

像SteveJ提到这里有一个错误:

if not exists (
    select * from dbo.sysobjects where id=object_id(N'[dbo.Farmaco]') 
) 

,这应该是

if not exists (
    select * from dbo.sysobjects where id=object_id(N'[dbo].[Farmaco]') 
) 

看看周围的表名括号!

所以问题是,在第二个脚本if条件总是正确的,即使Farmaco表存在。因为你不断收到错误信息。

0

我已经看到了你的片断,你必须创建表“dbo.Farmaco”之前先“dbo.Receita”这就是唯一的方法可以参考dbo.Farmaco表作为外键 dbo.Receita表。

希望这会帮助你。