2008-09-05 12 views
2

Başka bir tabloda (veya gerçekten herhangi bir türdeki matematik/dize uyuşmazlığı vb.) Tarih ve sütun sayısını günlüğe kaydeden bir tablonun olmasını istiyorum.INSERT ifadelerinde mysql'de hesaplanan sütunlar

CREATE TABLE `log` (
`id` INTEGER NOT NULL AUTO_INCREMENT , 
`date` DATETIME NOT NULL , 
`count` INTEGER NOT NULL , 
PRIMARY KEY (`id`) 
); 

Ekleme yaptığımda sayım sütununun benim için hesaplanması mümkün mü?

örn.

gibi bir şey yapın ve mysql tarafından hesaplanan sayımı yapın.

Açıkçası, sayımı almak ve eklemek için bir sorgu yaparak kendim yapabilirdim, ama bu daha iyi olurdu.

cevap

5

Bir tablo ekleme, güncelleştirme veya silme ile değiştirildiğinde, ek açıklamalar, veriler için en iyi araçtır.

create trigger log_date before insert on log 
for each row begin 
    set new.date = current_date() 
end; 
0

Neleri eklemek istediğinizi kesinlikle belirtmeniz gerekir. Bu INSERT ... SELECT ifadesi kullanılarak mümkün olmalıdır. bugünün tarihini ve foo tablodaki satır sayısını içeren, günlük tabloya yeni bir satır eklemek gerekir

INSERT INTO log (date, count) 
    SELECT DATE() as date, count(id) as count 
    from foo; 

. (Foo tablonun bir id sütunu varsayarsak .. Birincil anahtar veya başka bir indeksli sütun kullanın)

-1

Neden INFORMATION_SCHEMA.TABLES kullanmayın:

otomatik böyle bir şey görünüyordu bir tetikleyici oluşturmak istiyorum, geçerli tarihle günlüğüne yeni bir satırın tarihi sütunu ayarlamak için ?