2016-03-31 22 views
0

Aşağıdaki tablo kullanılır gelen yonunun:takın hafta geç

CREATE TABLE landingList(
isbn varchar(10) NOT NULL, 
id varchar(10) NOT NULL, 
dateFrom date NOT NULL, 
dateTill date NOT NULL, 
PRIMARY KEY (isbn, id, dateFrom, dateTill), 
FOREIGN KEY (isbn) REFERENCES books (isbn), 
FOREIGN KEY (id) REFERENCES users (id) 
); 

her kitap ARALIĞI farklı değer olacaktır için aşağıdaki değerleri

INSERT INTO library.landingList (isbn, id, dateFrom, dateTill) 
VALUES ('9780596009205','123234 ', NOW(), DATE_ADD(dateFrom, INTERVAL 6 DAY)); 

eklemek için çalışılıyor

+0

bu çalışmıyor? bir hata alıyor musun? – David

+0

Yeni veriler eklemek için tabloyu yeniden kullanamazsınız. Bir 'insert ... select' kullanın –

cevap

0

Eğer dateFrom şimdi ise() artık DATA_ADD içinde şimdi() kullanabilirsiniz.

INSERT INTO library.landingList (ISBN, id, dateFrom, dateTill) DEĞERLERİ ('9780596009205', '123234', ŞİMDİ NOW(), DATE_ADD ((), ARALIĞI: Aşağıdaki bakın 6 GÜN))); beklendiği gibi ne şekilde

+0

Kısıtlama nedeniyle bunu yapamam, bu bir sorun: Bir alt satır eklenemiyor veya güncelleştirilemiyor: Yabancı anahtar kısıtlaması başarısız oluyor ('library'.'landinglist', CONSTRAINT' landinglist_ibfk_1 'YABANCI kEY (' isbn') REFERANSLAR 'books' (' isbn')) –

+0

Kişisel yabancı anahtar kısıtlaması sorun "kitap" tablosunda mevcut olmayan bir "isbn" kullanarak yapmak zorundayız. Yukarıdaki soruyla ve date_add() öğesindeki now() ile hiçbir ilgisi yoktur. Eğer sizin mysql örneğiniz bu tür hataları yakalayacak şekilde ayarlanmamışsa, insertinizde kullandığınız isbn, 10 karakterden büyüktür, belki de probleminizle ilgili. – Benoit