Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Mysql Farklı bir autoinc
#1
Merhaba arkadaşlar.
Mysql de time tipinde bir alanım var. Bu alan değerlerini saat 10.00.00 dan itibaren 
10:01:00
10:02:00 ... gibi artmasını istiyorum.

Hatta hali hazırda 100 e yakın kaydım var. Algoritmayı nasıl kuracağım yada bu işi  konusunda fikir verecek olan var mı?
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#2
Yanlış anlamış olabilirim ama dediğiniz gibi bir tablodaki alandan bahsediyorsanız bu alana bir değer atamadıkça değişmez. Ya bir timer kullanıp o alana her dakika bir değer atamanız gerekir. yada SQL'de stored proc. yazmanız gerekir diye düşünüyorum.
Cevapla
#3
https://dev.mysql.com/doc/refman/8.0/en/...on_addtime

DATE_ADD(X, INTERVAL 1 MINUTE)
SRHT
Cevapla
#4
Şimdilik kayıt sayısı kadar bu update ile hallettim.. Teşekkürler @ARM

UPDATE bx AS a SET a.ys1= DATE_ADD((SELECT * FROM ( SELECT b.ys1 FROM bx AS b WHERE b.ys1 IS NOT NULL ORDER BY 1 DESC LIMIT 1) AS t), INTERVAL 30 SECOND) WHERE a.ys1 IS NULL LIMIT 2
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
(09-11-2022, Saat: 16:24)mcuyan Adlı Kullanıcıdan Alıntı: Şimdilik kayıt sayısı kadar bu update ile hallettim.. Teşekkürler @ARM

UPDATE bx AS a SET a.ys1= DATE_ADD((SELECT * FROM ( SELECT b.ys1 FROM bx AS b WHERE b.ys1 IS NOT NULL ORDER BY 1 DESC LIMIT 1) AS t), INTERVAL 30 SECOND) WHERE a.ys1 IS NULL LIMIT 2


Eğer tüm satırlara bir değer tanımlayacaksanız bu şekilde bir kullanımda olabilir.


SET @x := NOW();
UPDATE TABLO SET TARIH = @x := DATE_ADD(@x, INTERVAL 1 MINUTE);

NOW() kısmını değiştirerek buraya vereceğiniz sabit bir tarihten itibaren birer dakikalık ara ile arttırır.. sıralamanın düzgün olması için order by kullanılması gerekebilir. fonksiyon haline getirerek pratik kullanabilirsiniz. iyi çalışmalar, ben teşekkür ederim.
SRHT
Cevapla
#6
Bu tabloya her yeni kayıt eklediğim de bu update'i çalıştrmak yerine bi trigger tanımlayayım dedim ama.. ilginç ilginç hatalar alıyorum..
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#7
Yapılan işi bilmediğim için net birşey söylemem ancak Autoinc şeklinde kullanmak çok sağlıklı olmadığı kanaatindeyim. Eğer bir takım hesaplanmış verileri göstermek istiyorsanız fonksiyon haline ya da view olarak çalıştırmanız daha doğru olur gibi. Şahsi fikrim. Trigger'da da şu şekilde bir çalışma yapılabilir. Bir önceki kaydın tarihini al bir arttır ve yaz. şeklinde. Bunu da sadece insert tarafında yapmanız yeterli olur. Ancak kayıtlardan biri silindiğinde tarihler güncellenecek mi bilmiyorum. Dediğim gibi yaptığınız işe hakim değilim.
SRHT
Cevapla
#8
@enigma hocam olayı delphi de değil SQL ile çözmem gerekiyor. kısacası timer çözümü iş görmüyor malesef. Sad

@ARM hocam zaten bu update sql i aynen dediğiniz işi yapıyor yani en son kaydın üzerine interval koyup null olan bir alan buluyor ve ona data yı basıyor. ma bunu after insert trigger'ına yerleştiremedim. Neyse artık her yeni kayıtta manuel iş yapacağız.

İşi kısaca şöyle anlatyım:
Müşterilerimin data yedeklerini almasını sunucumda planlayıp yedek aldırmak istiyorum ki aynı anda 8-10 makina yedek alınca bandwith şişmesinden yada başka bi neden den dolayı data kaybı olmasın.
hali hazırda zaten 100den fazla nokta var bu işlemi yapacak. Şimdi tek tek elle bunlara yedek saati yazmaktan sa bi sql ile bu saatleri otomatik vermek istedim. Bunu yukarıdaki update işe çözdük.

Şimdiki problem; Yeni nodelar eklenince yedekleme saati (ys1) ni kendisi otomatik ayarlaması (son saati bul üzerine interval x ekle ve yaz ilgili alana).

After insert'e gerekli update i yapamadım bi türlü..
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#9
(09-11-2022, Saat: 17:55)mcuyan Adlı Kullanıcıdan Alıntı: @enigma hocam olayı delphi de değil SQL ile çözmem gerekiyor. kısacası timer çözümü iş görmüyor malesef. Sad

@ARM hocam zaten bu update sql i aynen dediğiniz işi yapıyor yani en son kaydın üzerine interval koyup null olan bir alan buluyor ve ona data yı basıyor. ma bunu after insert trigger'ına yerleştiremedim. Neyse artık her yeni kayıtta manuel iş yapacağız.

İşi kısaca şöyle anlatyım:
Müşterilerimin data yedeklerini almasını sunucumda planlayıp yedek aldırmak istiyorum ki aynı anda 8-10 makina yedek alınca bandwith şişmesinden yada başka bi neden den dolayı data kaybı olmasın.
hali hazırda zaten 100den fazla nokta var bu işlemi yapacak. Şimdi tek tek elle bunlara yedek saati yazmaktan sa bi sql ile bu saatleri otomatik vermek istedim. Bunu yukarıdaki update işe çözdük.

Şimdiki problem; Yeni nodelar eklenince yedekleme saati (ys1) ni kendisi otomatik ayarlaması (son saati bul üzerine interval x ekle ve yaz ilgili alana).

After insert'e gerekli update i  yapamadım bi türlü..

Insert Triggerin After değil Before eventine

SET NEW.TARIH = (SELECT DATE_ADD(TARIH, INTERVAL 1 MINUTE) FROM TABLO ORDER BY ID DESC LIMIT 1);

şeklinde deneyin..

Update ile değil, yeni oluşturulacak kaydın ilgili alanına veri yazmak için başına NEW. ekleyin. NEW.FIELD yani.

Her insert işleminde bir önceki kaydın tarihini alarak yeni kaydın ilgili alanına bir arttırarak yazacak.
SRHT
Cevapla
#10
tam aradğım cevap buydu. Tşkler.
// Bilgi paylaştıkça çoğalır.. 

Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL Editör önerisine ihyacım var. yhackup 12 3.409 29-01-2025, Saat: 11:35
Son Yorum: ercanskose
  MySQL - Sql-mode only_full_group_by hatası. hi_selamlar 5 3.566 25-12-2022, Saat: 10:43
Son Yorum: hi_selamlar
  MySQL Bağlantı Sorunu - MEB akıllı tahta Frrst 6 3.429 10-11-2022, Saat: 23:16
Son Yorum: mcuyan
  Delphi 7 MySql DAC Nasıl Kurulur mahone 1 1.585 08-10-2022, Saat: 22:09
Son Yorum: mcuyan
  mysql trigger subquery returns more than 1 row hatası cvheneburi 5 4.554 28-08-2022, Saat: 01:04
Son Yorum: cvheneburi



Konuyu Okuyanlar: 1 Ziyaretçi