Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MariaDB Hesaplanmış alan
#1
Merhaba,

Bir projemde MariaDB üzerinde basit bir tablom var. Araçların muayene tarihlerini ve bitiş tarihlerini tutuyorum. Bu alanlarım DATE tipinde tanımladım. Her kayıt eklendiğinde Muayeneye kalan günü hesaplattırmak istiyorum. Aşağıdaki gibi trigger tanımladığımda aşağıdaki gibi hata alıyorum. Çözümü hakkında yardımınızı bekliyorum. mysql tarafında yabancılık çekiyorum. Sebebini anladım aynı tabloda ınsertten sonra update yada insert ettirmiyor. peki bu durumda nasıl çözüm üretilir ? her ekleme yapında update kodunu kendim mi çalıştıracağım ?

Tablom

CREATE TABLE `OtobusMuayene` (
 `MuayeneID` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `MuayeneTarihi` date DEFAULT NULL,
 `MuayeneBitisTarih` date DEFAULT NULL,
 `MuayeneDosya` varchar(50) COLLATE utf8_turkish_ci DEFAULT NULL,
 `MuayeneKalanGun` int(11) DEFAULT NULL,
 PRIMARY KEY (`MuayeneID`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci


CREATE DEFINER=`root`@`localhost` TRIGGER KalanGunHesapla
AFTER INSERT
ON OtobusMuayene FOR EACH ROW
BEGIN
UPDATE TekulasPortal.OtobusMuayene SET OtobusMuayene.MuayeneKalanGun= DATEDIFF(OtobusMuayene.MuayeneBitisTarih,NOW());
END


Aldığım hata : 

SQL Error [1442] [HY000]: (conn=7348) Can't update table 'OtobusMuayene' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.


Edit : Sadece raporlamada göstereceğim için aşağıdaki şekilde view oluşturdum ve o şekilde işimi çözebilirim.

CREATE OR REPLACE
ALGORITHM = UNDEFINED VIEW `MuayeneTakipView` AS
select
   `OtobusMuayene`.`MuayeneID` AS `VMuayeneID`,
   `OtobusMuayene`.`MuayeneTarihi` AS `VMuayeneTarihi`,
   `OtobusMuayene`.`MuayeneBitisTarih` AS `VMuayeneBitisTarih`,
   `OtobusMuayene`.`MuayeneDosya` AS `VMuayeneDosya`,
   (to_days(`OtobusMuayene`.`MuayeneBitisTarih`) - to_days(now())) AS `VMuayeneKalanGun`
from
   `OtobusMuayene`
http://www.sercanca.com

Sadece Hobiciyim..
WWW
Cevapla
#2
AFTER INSERT yerine BEFORE INSERT trigger'ı kullanıp, SET NEW.MuayeneKalanGun şeklinde yapabilirsin sanırım.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(27-04-2020, Saat: 18:03)SimaWB Adlı Kullanıcıdan Alıntı: AFTER INSERT yerine BEFORE INSERT trigger'ı kullanıp, SET NEW.MuayeneKalanGun şeklinde yapabilirsin sanırım.

Hocam şimdilik view ile halletim. ama ihtiyaç olursa dediğinizi deneyeceğim.
http://www.sercanca.com

Sadece Hobiciyim..
WWW
Cevapla
#4
Kayıt Sayı artar ise view de ciddi sorunlar yaşarsınız. buna dikkat edin.

Bir projemde başıma geldi de ondan biliyorum.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#5
(28-04-2020, Saat: 00:34)mcuyan Adlı Kullanıcıdan Alıntı: Kayıt Sayı artar ise view de ciddi sorunlar yaşarsınız. buna dikkat edin.

Bir projemde başıma geldi de ondan biliyorum.

Merhabalar,

Ne kadar bir kayıt sayısından bahsediyorsunuz acaba?
Bir de, ne gibi sorunlar örnekleyebilirseniz sevinirim.

Teşekkürler.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#6
Örneğin bir kasa raporu düşünün. Farklı Tablolardan Data alıp unionall ile birleştiriyorsunuz. View de Parametre gönderimi olmadığından bu tüm tablodaki kayıtların hepsini alıp işlemek ve en sonunda where ile kriter eklemeniz gerekiyor.

5 tablom var, ve 3 tablodaki kayıt sayısı ayrı ayrı milyona yaklaşmakta. Bilmem anlatabildim mi.
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#7
(28-04-2020, Saat: 01:10)mcuyan Adlı Kullanıcıdan Alıntı: Örneğin bir kasa raporu düşünün. Farklı Tablolardan Data alıp unionall ile birleştiriyorsunuz. View de Parametre gönderimi olmadığından bu tüm tablodaki kayıtların hepsini alıp işlemek ve en sonunda where ile kriter eklemeniz gerekiyor.

5 tablom var, ve 3 tablodaki kayıt sayısı ayrı ayrı milyona yaklaşmakta. Bilmem anlatabildim mi.

Merhabalar,

Paylaşımınız için teşekkürler.
Gayet iyi anlatabildiniz.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  create de edilen mysqlde her bir alan için 3 ayrı dosya oluşması ahmetb 7 1.843 14-01-2019, Saat: 11:17
Son Yorum: Fesih ARSLAN
  MySQL vs MariaDB. Hangisi tercih edilmeli? uparlayan 4 1.879 18-06-2018, Saat: 15:14
Son Yorum: vkamadan



Konuyu Okuyanlar: 1 Ziyaretçi