MySQL: insert deyimi kendisi sokulmadan satırın id kullanın

5 Cevap php

Ben böyle bir şey için çalışıyorum:

INSERT INTO dir_pictures SET filename=CONCAT(picture_id,'-test');

picture_id benim birincil anahtar, oto-artıştır. Temelde ben açıklamada kendisi, bu insert ifadenin id koymak için çalışıyorum.

Ben bazı ekstra PHP kodu veya birden fazla ifadeler kullanılarak yapılabilir emin değilim, ama bir atış yapmak için hızlı ve kolay bir yolu olup olmadığını merak ediyordum.

PS. Her zaman koymak '0-testi 'Yukarıdaki deyim

5 Cevap

Önce bir kayıt eklemek. Sonra bir noktalı virgül ile ifadeleri ayırmak ve LAST_INSERT_ID() yeni eklenen değiştirmemesi id almak için kullanabilirsiniz. Tek seferde yürütmek.

insert into dir_pictures .... ; 
update dir_pictures set filename=CONCAT(LAST_INSERT_ID(),'-test') where id = LAST_INSERT_ID()

Sadece insert parçası olarak information_schema oluşturan tablo için geçerli auto_increment değeri seçin:

INSERT INTO dir_pictures SET filename=CONCAT((SELECT auto_increment FROM
information_schema.tables WHERE table_name='dir_pictures'), '-test')

Peki, ben bu hiç işe sanmıyorum, insert tamamlanıncaya kadar satır kimliği tanımak ... yani yok!

Yerine satır almak neden sadece dosya hesaplamak değil?

INSERT INTO dir_pictures (file_extension) VALUES ('-data')

SELECT picture_id, CONCAT(picture_id, file_extension) as filename
FROM dir_pictures

Bu gerçekten mümkün değil, muhtemelen sadece çıkış yolu yerine içeri yolda onu borular ile arka arkaya senin yararına olacaktır

Dir_pictures DAN dosya olarak concat (id, 'metin') SEÇİMİ

Eğer gerçekten bir SQL deyiminde yapmak istiyorsanız, sizin gibi kesmek deneyebilirsiniz:

INSERT INTO dir_pictures SET filename=CONCAT((select max(picture_id)+1 from dir_pictures),'-test');

Bu çok dişli uygulaması ise yarış koşullarına dikkat edin ...

Ayrıca, ben boş bir masada çalışmak istiyorum şüpheliyim ...