テーブルの作成中にこのエラーが発生し続ける:識別子が必要なこの位置では順序が無効です。 Webで調べましたが、これを修正する方法がわかりません。そのエラーの意味とそれを修正する方法は?
Create Table Customer
(
CustomerID Int Primary Key,
CustomerName varchar(20) Not Null,
CustomerContactNo varchar (10)Not Null,
CustomerAddress varchar(50)Not Null,
CustomerEmail varchar(25)Not Null
)
ENGINE=INNODB;
Create Table Employee
(
EmployeeID TinyInt Primary Key,
EmployeeName varchar(20) Not Null,
EmployeeContactNo varchar(10)Not Null,
EmployeeEmail varchar(25)Not Null
)
ENGINE=INNODB;
Create Table Order
(
OrderNo Int Primary Key,
Foreign Key(CustomerID) REFERENCES Customer(CustomerID),
Foreign Key(EmployeeID) REFERENCES Employee(EmployeeID)
)ENGINE=INNODB;
予約語「注文」をテーブル名として使用しています。
これは、(常に)名前をバックティックで囲む場合、つまり、「順序」の場合、可能ですが、まだ良い考えではありません。ただし、別のテーブル名を考えた方がよいでしょう。
ところで、あなたのOrder
テーブルには他にもいくつか問題があります。これらを使用して外部キーを作成する前に、CustomerID
列とEmployeeID
列を追加する必要があります。
Create Table `Order` (
OrderNo Int Primary Key,
CustomerID Int,
EmployeeID TinyInt,
Foreign Key(CustomerID) REFERENCES Customer(CustomerID),
Foreign Key(EmployeeID) REFERENCES Employee(EmployeeID)
) ENGINE=INNODB;
また、tinyint
がEmployeeID
に必要なデータ型であることを確認しますか?範囲は非常に限定されており、[-128、127]のみです。
別の良いアイデアは、int
sを(すべてのテーブルで)unsigned
として指定することです。つまり、CustomerID Int unsigned
、おそらく負のIDを使用しないため。