• 21-04-2016, 23:33:38
    #1
    Merhaba arkadaşlar,

    Bir stok takip programı yazıyorum.Ürünler tablosundan daha önce sipariş verilmiş bir ürünü silmeyi nasıl engellerim.Yanlış anlaşılmasın kod istemiyorum.Sadece fikir verirseniz sevinirim...

    Dil : C#
    Veritabanı : Ms-sql
  • 21-04-2016, 23:58:13
    #2
    Merhabalar.

    Hareket yaptığınız tabloda ürün sipariş edilmişmi kontrolü yapacaksınız. Eğer değer boş dönüyorsa silecek dolu dönüyorsa silmeyerek uyarı verdireceksiniz.

    Kolay gelsin.
  • 23-04-2016, 21:17:34
    #3
    Hocam sql foreign key ile sorunu çözdüm fakat siparişler tabloma aynı stoktan 1 den fazla kayıt yapamıyorum.Örneğin;

    123 stok kodlu ürünüm bitti ve sipariş verdim.Daha önce farklı bir tarihte 123 stok koduna ait bir sipariş girişi olduğu için yeni kayıtta hata alıyorum...
  • 28-04-2016, 01:42:46
    #4
    Üyeliği durduruldu
    duraliozkan adlı üyeden alıntı: mesajı görüntüle
    Hocam sql foreign key ile sorunu çözdüm fakat siparişler tabloma aynı stoktan 1 den fazla kayıt yapamıyorum.Örneğin;

    123 stok kodlu ürünüm bitti ve sipariş verdim.Daha önce farklı bir tarihte 123 stok koduna ait bir sipariş girişi olduğu için yeni kayıtta hata alıyorum...
    Merhaba, yapmış olduğunuz şekilde primary key direk olarak stok kodu olması nedeniyle ve eşsiz olması nedeniyle tekrar aynı kodu kullanamıyorsunuz.

    Bunun için Composite Primary Key kullanmalısınız.

    Kısaca anlatmak gerekirse, Birden fazla attribute'un birleşmesi ile composite key oluşur. Sizin örneğinizde eğer primary key'i stok kodu ve siparis tarihi'ni kullanarak composite key oluşturursanız yaşadığınız problem ortadan kalkar.

    Youtube konu anlatımı:
    https://www.youtube.com/watch?v=OKJ5eoF-HqE
  • 28-04-2016, 19:14:41
    #5
    Ugurock adlı üyeden alıntı: mesajı görüntüle
    Merhaba, yapmış olduğunuz şekilde primary key direk olarak stok kodu olması nedeniyle ve eşsiz olması nedeniyle tekrar aynı kodu kullanamıyorsunuz.

    Bunun için Composite Primary Key kullanmalısınız.

    Kısaca anlatmak gerekirse, Birden fazla attribute'un birleşmesi ile composite key oluşur. Sizin örneğinizde eğer primary key'i stok kodu ve siparis tarihi'ni kullanarak composite key oluşturursanız yaşadığınız problem ortadan kalkar.

    Youtube konu anlatımı:
    https://www.youtube.com/watch?v=OKJ5eoF-HqE
    Hocam dediğiniz gibi yapıyorum fakat bu seferde stokapplied tablomda şu kodu çalıştırınca hata alıyorum...

    KOD;
    create table stokapplied --drop table stokapplied
    (
    UrunKodu bigint,
    ....
    ....
    ...
    ..
    constraint UrunKodu foreign key references stokreceived(UrunKodu)
    )

    HATA;
    Msg 1776, Level 16, State 0, Line 1
    There are no primary or candidate keys in the referenced table 'stokreceived' that match the referencing column list in the foreign key 'UrunKodu'.
    Msg 1750, Level 16, State 0, Line 1
    Could not create constraint. See previous errors.
  • 28-04-2016, 20:42:15
    #6
    Üyeliği durduruldu
    duraliozkan adlı üyeden alıntı: mesajı görüntüle
    Msg 1776, Level 16, State 0, Line 1
    There are no primary or candidate keys in the referenced table 'stokreceived' that match the referencing column list in the foreign key 'UrunKodu'.
    Msg 1750, Level 16, State 0, Line 1
    Could not create constraint. See previous errors.
    Referans yapılan tablo (stokreceived) isimli tabloda 'UrunKodu' isimli kolon olmadığı için eşleşmeme hatası alıyorsun. Attribute isminde bir problem var. Tabloyu kontrol et.

    İkinci hata iste ilk hatadan türetilen bir hata olduğunu belirtiyor. Constraint diğer tablodan 'UrunKodu'nu almak istiyor ancak bir önceki hata gibi 'UrunKodu' isimli kolonu bulamadığı için oluyor.
  • 28-04-2016, 20:55:39
    #7
    Stokreceived tablomda UrunKodu alanım var hocam.Resime bakabilirsin...