2016-03-24 35 views
0

Herkese selam, bir proje için bir oyun veritabanı hazırlamaya çalışıyorum, SQL Fiddle üzerinde test ediyorum ve PlayerID'nin varsayılan değeri olmadığını söyleyerek bu hatayı almaya devam ediyorum, ancak bu otomatik olarak artırıldığından niye ya?? herhangi bir yardım takdir edilecektir. Bu insert içinSQL varsayılan değer

CREATE TABLE tblPlayer (
    PlayerID INT PRIMARY KEY AUTO_INCREMENT NOT NULL, 
    UserName VARCHAR(50) NOT NULL, 
    Password VARCHAR(50) NOT NULL, 
    Email VARCHAR(100) NOT NULL, 
    HighScore INT (50), 
    AccountType BOOLEAN, 
    Status BOOLEAN, 
    Country VARCHAR (50) 
); 

CREATE TABLE tblGame (
    GameID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    Timeleft DECIMAL NOT NULL 
); 

CREATE TABLE tblMap (
    MapID INT AUTO_INCREMENT PRIMARY KEY NOT NULL, 
    GameID INT, 
    MineLocationXY VARCHAR(10), 
    OneLocationXY VARCHAR(10), 
    TwoLocationXY VARCHAR(10), 
    ThreeLocationXY VARCHAR(10), 
    FOREIGN KEY (GameID) REFERENCES tblGame (GameID) 
); 

CREATE TABLE tblPlayerGame (
    PlayerID INT NOT NULL, 
    GameID INT NOT NULL, 
    PRIMARY KEY (PlayerID,GameID), 
    PlayerOneScore INT(50), 
    PlayerTwoScore INT(50), 
    FOREIGN KEY (PlayerID) REFERENCES tblPlayer (PlayerID), 
    FOREIGN KEY (GameID) REFERENCES tblGame (GameID) 
    ); 

CREATE TABLE tblPlayerClick (
    PlayerID INT, 
    LocationX VARCHAR (10), 
    LocationY VARCHAR (10), 
    FOREIGN KEY (PlayerID) REFERENCES tblPlayer (PlayerID) 
); 

INSERT INTO tblPlayer (UserName,Password,Email,AccountType,Status,Country) 
VALUES ('Geoff22','password2016','[email protected]',TRUE, TRUE, 'New Zealand'), 
     ('Steve1','password','[email protected]',False, TRUE, 'USA') 
; 

INSERT INTO tblGame (TimeLeft) 
VALUES (120), (120) 
; 

INSERT INTO tblMap (MineLocationXY,OneLocationXY,TwoLocationXY,ThreeLocationXY) 
VALUES ('X2,Y3','X6,Y8','X9,Y1','X1,Y3') 
; 

INSERT INTO tblPlayerClick (LocationX,LocationY) 
VALUES ('X1','Y2') 
; 

INSERT INTO tblPlayerGame (PlayerOneScore,PlayerTwoScore) 
VALUES (22,19) 
; 
+0

Mayın süpürücüsüne benzer bir oyunu eklemeyi unutmayın ama iki oyuncunun isteğe bağlı –

cevap

1

:

INSERT INTO tblPlayerGame (PlayerOneScore,PlayerTwoScore) 
    VALUES (22,19); 

Sen PlayerId ve GameId için hiçbir değerleri vardır. Bunlar varsayılan değerlerle birlikte NOT NULL olarak bildirilmiştir.

Bu nedenle, bir hata alıyorsunuz.

+0

ile ne dediğini görüyorum ama hem Oyuncu ID'si hem de GameID bu tablodaki kompozit anahtar için kullanılıyor ve buradaki ana tablolara başvuruyor . Yani oradan değerleri almalılar mı? –

+0

@AaronLyall. . . Hayır, yabancı anahtarlar böyle çalışmıyor. 'Yabancı anahtar' ilişkisi, her bir satıra geçerli değerler eklemeniz gerektiği anlamına gelir. –