2013-07-19 72 views
1
CREATE TABLE IF NOT EXISTS 'test'(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
    `campaincode` VARCHAR(100) NOT NULL , 
    `description` VARCHAR(100) NOT NULL , 
    `paymentplantype` VARCHAR(100) NOT NULL , 
    `contractlength` INT NOT NULL , 
    `monthlyannuityfactor` DOUBLE NOT NULL , 
    `initialfee` DOUBLE NOT NULL , 
    `notificationfee` DOUBLE NOT NULL , 
    `interestratepercentage` INT NOT NULL , 
    `interestfreemonths` INT NOT NULL , 
    `paymentfreemonths` INT NOT NULL , 
    `fromamount` DOUBLE NOT NULL , 
    `toamount` DOUBLE NOT NULL , 
    `timestamp` INT UNSIGNED NOT NULL , 
    `storeid` INT NOT NULL 
) 
+0

有很多大寫的... JKS請frovide錯誤信息 –

+0

看你如何使用反引號那裏!?那麼,有一個地方你使用了別的東西! – Strawberry

+0

此外,你想要DOUBLE而不是DECIMAL是非常不可能的。但是我知道什麼? – Strawberry

回答

1

您sholud刪除表名'字符如下

CREATE TABLE IF NOT EXISTS test(
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
`campaincode` VARCHAR(100) NOT NULL , 
`description` VARCHAR(100) NOT NULL , 
`paymentplantype` VARCHAR(100) NOT NULL , 
`contractlength` INT NOT NULL , 
`monthlyannuityfactor` DOUBLE NOT NULL , 
`initialfee` DOUBLE NOT NULL , 
`notificationfee` DOUBLE NOT NULL , 
`interestratepercentage` INT NOT NULL , 
`interestfreemonths` INT NOT NULL , 
`paymentfreemonths` INT NOT NULL , 
`fromamount` DOUBLE NOT NULL , 
`toamount` DOUBLE NOT NULL , 
`timestamp` INT UNSIGNED NOT NULL , 
`storeid` INT NOT NULL 
) 

Sql Fiddle Demo

+0

是的 - 你也可以刪除所有反引號! – Strawberry

-1

有你與你的SQL

  1. 有幾個問題是要檢查的方式如果表格存在
  2. 您沒有正確指定小數數據類型
  3. 的是無需包裝在「
下面

是檢查代碼,如果,如果我不存在表中存在創建它

/* CHECK IF THE TABLE EXISTS IN sys.objects*/ 
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = object_id(N'[dbo].[Table]') AND type in (N'U')) 


BEGIN -- If it dont create the table 
    CREATE TABLE [VI].[dbo].[Table] 
     (
      id INT NOT NULL identity(1,1) PRIMARY KEY 
      , campaincode VARCHAR(100) NOT NULL 
      , [description] VARCHAR(100) NOT NULL --if you want to use keywords that SQL uses like description it is best practise to wrap them in [] 
      , paymentplantype VARCHAR(100) NOT NULL 
      , contractlength INT NOT NULL 
      , monthlyannuityfactor decimal(18, 0) NOT NULL -- when using decimal you must also type in the amount of numbers you want before the .(decimal place) and the amount you want after the decimal place 
                  -- i have set this to 18 before the . and 0 after this is the deafult when creating tables 
      , initialfee decimal(18, 0) NOT NULL 
      , notificationfee decimal(18, 0) NOT NULL 
      , interestratepercentage INT NOT NULL 
      , interestfreemonths INT NOT NULL 
      , paymentfreemonths INT NOT NULL 
      , fromamount decimal(18, 0) NOT NULL 
      , toamount decimal(18, 0) NOT NULL 
      , [timestamp] INT NOT NULL 
      , storeid INT NOT NULL 
     ) 
END 

如果你需要更多的幫助 所有的話消息我也不會忘記標記答案爲完整的,如果它回答你的問題

+0

「CREATE TABLE IF NOT EXISTS」有什麼問題? http://dev.mysql.com/doc/refman/5.1/de/create-table.html – joe776

+0

這個標籤引用了phpmyadmin,在這個回答不恰當的情況下! – Strawberry

0

表名引號insted它應該有backtiks。試試這個:

CREATE TABLE IF NOT EXISTS `test`(
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY , 
    `campaincode` VARCHAR(100) NOT NULL , 
    `description` VARCHAR(100) NOT NULL , 
    `paymentplantype` VARCHAR(100) NOT NULL , 
    `contractlength` INT NOT NULL , 
    `monthlyannuityfactor` DOUBLE NOT NULL , 
    `initialfee` DOUBLE NOT NULL , 
    `notificationfee` DOUBLE NOT NULL , 
    `interestratepercentage` INT NOT NULL , 
    `interestfreemonths` INT NOT NULL , 
    `paymentfreemonths` INT NOT NULL , 
    `fromamount` DOUBLE NOT NULL , 
    `toamount` DOUBLE NOT NULL , 
    `timestamp` INT UNSIGNED NOT NULL , 
    `storeid` INT NOT NULL 
) 

一些有用的信息,反引號總是應該使用。但是爲什麼一個團隊可能不想使用它們有一些原因。

優點:

  • 使用它們,有沒有保留字或禁止字符。
  • 在某些情況下,您會收到更多描述性錯誤消息。
  • 如果你避免不好的做法,你不會在乎,但是......實際上, 有時它們是避免SQL注入的體面方式。

缺點:

  • 它們不是標準,通常不便於攜帶。但是,只要 您不使用反引號作爲標識符的一部分(這是我能夠想象得出的最糟糕的 實踐),那麼您可以通過自動刪除反引號將您的查詢移植到 。
  • 如果你的一些查詢來自Access,他們可能會引用表名 與「(也許你不能刪除所有的」盲目「)。但是,允許使用反引號和雙引號的組合。
  • 一些愚蠢的軟件或功能過濾您的查詢,並有 反向問題。然而,它們是ASCII的一部分,所以這個 意味着你的軟件/功能非常糟糕。

請參考:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html