Kayıt
22 Ağustos 2010
Mesajlar
1.866
Beğeniler
514
Takımı
Seçiniz...
Bi türlü yapamadım, yanlış bişey yapmakta istemiyorum ama yapmak istediğim şu;
select * from 'tablo adı' where 'tablo sütunu' like 'item adı yada Id'si vb.' bu şekilde itemi bulabiliyoruz.

Benim yapmak istediğim;
_Char tablosunda örneğin Ahmet adında bi çar olsun.
Bunu silmek istediğimiz zaman, avatar tablosu, skill tablosu, inventory tablosu, mastery tablosu vb. tablolardanda silmemizi istiyor.
Bende verdiği uyarılara göre tek tek o tablodaki ilgili ID'yi siliyorum.
En son hepsi bitincede _Char tablosundan çarı silebiliyorum.

Şimdi istediğim şu, buna nasıl bir Query yazmalıyım ki okuttuğum zaman Ahmet isimli çarı silsin.
Yada Ahmet isimli çarın ID sini ilgili bütün tablolardan silsin ve en sonunda Ahmet isimli çarı _Char tablosundan temizlesin.

SQL'de kod yazma konusunda fazla bilgim yok, yaklaşık 3-4 aydır uğraşıyorum.
Bi çok şeyi yapabiliyorum ama fazla bilgim olmadığı için malum soluğu burda alıyorum.

Dipnot: @Collapse hızır gibi yetişir şimdi. pray:
 
Kayıt
22 Aralık 2010
Mesajlar
7.623
Beğeniler
343
Delete from komutu kullanarak silebilirsin. Çıkan uyarılarda yazan tüm tabloları içeren bir kod yazabilirsin.

Ya da belki hazırı vardır? Zaten oyunda karakter silme fonksiyonu var. Bunun prosedürünü bulup kullanabilirsin.
 
Kayıt
15 Temmuz 2009
Mesajlar
9.023
Beğeniler
254
Takımı
Galatasaray
Kod:
USE [SRO_VT_SHARD]
go
declare @CharID int , @CharName varchar(16)
set @CharName = 'CharName'
set @CharID = ( select CharID from _Char where CharName16 = @CharName )
DELETE FROM _InventoryForAvatar WHERE CharID = @CharID
DELETE FROM _Inventory WHERE CharID = @CharID
DELETE FROM _CharSkillMastery WHERE CharID = @CharID
DELETE FROM _CharSkill WHERE CharID = @CharID
DELETE FROM _CharTrijob WHERE CharID = @CharID
DELETE FROM _User WHERE CharID = @CharID
DELETE FROM _StaticAvatar WHERE CharID = @CharID
DELETE FROM _TimedJob WHERE CharID = @CharID
DELETE FROM _Char WHERE CharID = @CharID
'CharName' yazan kısmı değiştirmek istediğinle değiştirip executelayacaksın.
 
Kayıt
24 Mayıs 2007
Mesajlar
3.806
Beğeniler
55
Şehir
İzmir, Bornova
Bu şekilde silinmesini tavsiye etmiyorum, prosedür üzerinden silmek en güvenlisi :)
 
Kayıt
15 Temmuz 2009
Mesajlar
9.023
Beğeniler
254
Takımı
Galatasaray
Bir kaç kontrol yapıyor ancak o da çok gerekli değil açıkçası, gs'nin anlayacağı error mesajları veriyor.
Öylesini de yazayım.
Kod:
USE [SRO_VT_SHARD]
go
declare @CharID int , @CharName varchar(16)
set @CharName = 'CharName'
set @CharID = ( select CharID from _Char where CharName16 = @CharName )
exec _DeleteCharPermanently @CharID
 
Kayıt
22 Ağustos 2010
Mesajlar
1.866
Beğeniler
514
Takımı
Seçiniz...
Kod:
USE [SRO_VT_SHARD]
go
declare @CharID int , @CharName varchar(16)
set @CharName = 'CharName'
set @CharID = ( select CharID from _Char where CharName16 = @CharName )
DELETE FROM _InventoryForAvatar WHERE CharID = @CharID
DELETE FROM _Inventory WHERE CharID = @CharID
DELETE FROM _CharSkillMastery WHERE CharID = @CharID
DELETE FROM _CharSkill WHERE CharID = @CharID
DELETE FROM _CharTrijob WHERE CharID = @CharID
DELETE FROM _User WHERE CharID = @CharID
DELETE FROM _StaticAvatar WHERE CharID = @CharID
DELETE FROM _TimedJob WHERE CharID = @CharID
DELETE FROM _Char WHERE CharID = @CharID
'CharName' yazan kısmı değiştirmek istediğinle değiştirip executelayacaksın.
Bunu deneyeceğim, Db'de sorun yaratmaz sanırım.
Diğer türlü zor oluyo, tablo tablo geziyorum.
Birde elimde bir program var onun üzerinden Shard'ı temizleyince Fortress, Guild tablolarını vb. de siliyor.
Yani oyunda ne kadar çar, guild vb. varsa hepsini siliyor. Bu query sorunsuzca çalışırsa arşive alacağım :muck:

Bu şekilde silinmesini tavsiye etmiyorum, prosedür üzerinden silmek en güvenlisi :)
Nasıl yani? Nasıl yapmamız gerekiyor? Biraz bahsedersen sevinicem :detective:

Bide buraya bakmanızı rica ediyorum;
TÜM VERGİLERİ TEK KALEYE BAĞLAMAK?
 
Kayıt
24 Mayıs 2007
Mesajlar
3.806
Beğeniler
55
Şehir
İzmir, Bornova
Sarkolata Procedure kullanım kodunu vermiş zaten :)
 
Kayıt
22 Ağustos 2010
Mesajlar
1.866
Beğeniler
514
Takımı
Seçiniz...
Kodu kullandım lakin _Char tablosundan silinmiyor.
Query okutup, çar tablosundan elle silmek isteyince 2 adet tablo hatası veriyor.
O tablolardan elle silip Query okutunca _Char tablosundanda siliniyor.
CharCos ve InvChar tablosu mu ne.
 
Kayıt
24 Mayıs 2007
Mesajlar
3.806
Beğeniler
55
Şehir
İzmir, Bornova
Procedurun amacı StrUserID den Char'ın bağını kesmek, genel olarak online oyunlarda veri bütünlüğünün korunması gerekir, bazı ihtimallerle duplicate CharID oluşursa daha büyük sorunlar oluşuyor (Bir kere başıma gelmişti), bu sebepten ötürü aktif bir oyunda karakteri tablolardan temizlemektense, procedure ile karakteri işlevsiz hale getirmek daha mantıklı olacaktır.
 
Kayıt
22 Ağustos 2010
Mesajlar
1.866
Beğeniler
514
Takımı
Seçiniz...
Yani şunu diyorsun, Prosedür kullanırsam çar'ın tüm özellikleri silinir ve çar bir daha kullanılmaz. Oyun içerisindende silinir ama sıralamada gözükür?
 
Yukarı Alt