Inhalte aufrufen

Profilbild

Alle Produkte löschen - möglich?

shopcheck

  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
21 Antworten zu diesem Thema

#1 World-of-Heli

World-of-Heli

    Benutzer

  • Members
  • PunktPunktPunkt
  • 56 Beiträge

Geschrieben: 24 April 2013 - 05:53

Hi All,

ist es möglich alle Produkte mit einmal zu löschen?

In der Produktverwaltung sehe ich ja nur 15 Artikel auf einmal - löschen von ca. 30TSD Artikeln wäre ja eine Wochenaufgabe.

Das Probleme beim Importe von Smartstore 6 Dateien - hat der Import mir alle Produkte doppelt bis dreifach angelegt obwohl wir angeclickt haben nur neue Anfügen!

Danke vorab!

#2 Atempause

Atempause

    Benutzer

  • Members
  • 432 Beiträge

Geschrieben: 24 April 2013 - 09:20

Moin
auf SQL Datenbank einloggen. und
TRUNCATE TABLE <name>; (Tabelle Leeren)
COMMIT; (Bestätigen mit Commit)
Vosicht! TRUNCATE gelöschten Daten kann nicht mehr mit ROLLBACK wiederhergestellt werden
grüß
Neil

#3 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 24 April 2013 - 11:48

In der Produktverwaltung sehe ich ja nur 15 Artikel auf einmal - löschen von ca. 30TSD Artikeln wäre ja eine Wochenaufgabe.

Das würde die Artikeldatensätze auch nicht physikalisch löschen, sondern lediglich als "gelöscht" markieren.

Das Probleme beim Importe von Smartstore 6 Dateien - hat der Import mir alle Produkte doppelt bis dreifach angelegt obwohl wir angeclickt haben nur neue Anfügen!

"Nur neue Daten anfügen" importiert alles, ungeachtet vorhandener Daten. Das ist ein Bug, den wir beheben werden.
Er soll natürlich vorhandene Daten nicht nochmal importieren.

Marcus Gesing

Smartstore AG


#4 winkler

winkler

    V.I.P

  • Members
  • 2898 Beiträge

Geschrieben: 24 April 2013 - 14:38

Hallo Marcus

Das würde die Artikeldatensätze auch nicht physikalisch löschen

Heißt das, wenn ich einen Artikel oder Kunden lösche, dann bleibt der trotzdem in der Datenbank erhalten? Das würde zum Beispiel erklären, warum ich einen "gelöschten" Kunden nicht neu anlegen kann, da die Meldung kommt "...diese Mailadresse ist bereits vergeben". Aber irgendwie muss man den Artikel oder den Kunden doch komplett rausbekommen...ohne direkten Eingriff in die Datenbank?:rolleyes:

Ciao, Micha
Smartstore NET
ESET Endpoint Antivirus

Adobe CC
www.winkimedia.de

Shopbetreuung: www.schmiede24.com

 


#5 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 24 April 2013 - 15:06

Hallo Micha,

Heißt das, wenn ich einen Artikel oder Kunden lösche, dann bleibt der trotzdem in der Datenbank erhalten?

Ja. So auf Anhieb fallen mir drei Entitäten ein, bei denen das so ist: Produkte, Warengruppen und Kunden.

Das würde zum Beispiel erklären, warum ich einen "gelöschten" Kunden nicht neu anlegen kann, da die Meldung kommt "...diese Mailadresse ist bereits vergeben".

Korrekt.

Aber irgendwie muss man den Artikel oder den Kunden doch komplett rausbekommen...ohne direkten Eingriff in die Datenbank?

Nein. Beim Löschen über die Datenbank sollte man genau wissen was tut, sonst riskiert man u.U. inkosistente Daten.

Marcus Gesing

Smartstore AG


#6 winkler

winkler

    V.I.P

  • Members
  • 2898 Beiträge

Geschrieben: 24 April 2013 - 15:49

Hallo Marcus
Hmmm...und was mache ich, wenn der "gelöschte" Kunde wieder "mitspielen" will? :rolleyes: Also sollte man es grundsätzlich vermeiden, Kunden zu löschen...man sollte sie also nur sperren, in dem man die zugewiesenen Kundengruppen entfernt. Gut zu wissen :rolleyes::)

Ciao, Micha
Smartstore NET
ESET Endpoint Antivirus

Adobe CC
www.winkimedia.de

Shopbetreuung: www.schmiede24.com

 


#7 Security Tech

Security Tech

    Super V.I.P

  • Members
  • 4466 Beiträge

Geschrieben: 24 April 2013 - 15:55

Das ist aber genau das was auf Dauer die Datenbank zu müllt. Gerade bezogen auf die Produkte und auch Warengruppen. Dazu sollte es ebenfalls eine Lösung geben und zwar so eine, wo man als Anwender gar nichts mit der Datenbank zu tun hat. Das birgt sonst ungeahnte Probleme.
Gruß Joachim

#8 Wolfgang Schmerge

Wolfgang Schmerge

    SmartStore AG

  • Administrators
  • 2453 Beiträge

Geschrieben: 24 April 2013 - 18:55

Hallo,

wie bereits von Marcus beschrieben, können komplette gelöschte Kunden unterschiedliche Probleme bereiten.
Der Kundeneintrag ist ja u.a. mit X möglichen anderen Daten verknüpft.
Z.B. Aufträge, gewährte Rabatte, Foreneinträge, Bewertungen u.v.m.

Wenn ihr eine E-Mail-Adresse eines gelöschten Kunden weiter verwenden wollt, könnt ihr die E-Mail-Adresse des zu löschenden Kunden vorher umbenennen.

Liebe Grüße

Wolfgang

#9 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 24 April 2013 - 20:29

Hallo Marcus
Hmmm...und was mache ich, wenn der "gelöschte" Kunde wieder "mitspielen" will? :rolleyes:

Dann könnte man ihn wieder auferstehen lassen, indem man das Deleted-Flag einfach wieder zurücksetzt. Die Funktion gibt's aber glaube ich noch nicht.
So würde ich es jedenfalls machen. Vorteil hier: Er spielt dann wieder mit seiner kompletten Historie mit.

Bearbeitet von Marcus Gesing, 24 April 2013 - 20:39,

Marcus Gesing

Smartstore AG


#10 Micro-Terra

Micro-Terra

    Benutzer

  • Members
  • PunktPunktPunkt
  • 40 Beiträge

Geschrieben: 10 June 2013 - 20:35

Hallo,

...
Nein. Beim Löschen über die Datenbank sollte man genau wissen was tut, sonst riskiert man u.U. inkosistente Daten.


Ja, sollte man. Aber: Es sollte vor allem seitens der Entwicklung darauf geachtet werden, dass keine inkonsistente Daten entstehen, beispielsweise über CASCADE DELETE, PK-FK-Beziehungen, Trigger etc.

Leider fehlen diese an vielen Stellen - sind z.B. Produkte mit Herstellern verknüpft und die Hersteller werden gelöscht, bleiben die Refenzierungen als inkonsistente Daten in der DB vorhanden. Es bleibt nur das Löschen auf DB-Ebene.

#11 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 12 June 2013 - 12:04

Hallo Micro-Terra,

das sind keine Inkonsistenten, sondern gemäß der Datenstrukturierung der Regelfall. Produkte sind nicht direkt mit Herstellern verknüpft,
sondern werden diesen über die Tabelle Product_Manufacturer_Mapping zugeordnet\gemapped. "Product" ist eine Primär-Entität, die wird
nicht physisch gelöscht, weder direkt noch indirekt durch eine kaskadierende Anweisung. Ein physisches Löschen eines Produkts und der
daraus resultierende Datenzustand sind schlichtweg nicht definiert.

Marcus Gesing

Smartstore AG


#12 Micro-Terra

Micro-Terra

    Benutzer

  • Members
  • PunktPunktPunkt
  • 40 Beiträge

Geschrieben: 12 June 2013 - 13:05

Hallo,

also ist es in Ihren Augen keine Inkonsistenz, wenn Hersteller ( A ) gelöscht wird und die referenzierenden Daten in der Mapping-Tabelle zwischen Produkt ( P ) und Hersteller A erhalten bleiben und diese Informationen dann auch weiterhin im Frontend beim Produkt angezeigt werden ( Hersteller A ), obwohl es den Hersteller nicht mehr gibt?

#13 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 12 June 2013 - 14:03

wenn Hersteller ( A ) gelöscht wird und die referenzierenden Daten in der Mapping-Tabelle zwischen Produkt ( P ) und Hersteller A erhalten bleiben

Das tun sie aber nicht (s. Beziehungen in Product_Manufacturer_Mapping).

und diese Informationen dann auch weiterhin im Frontend beim Produkt angezeigt werden ( Hersteller A ), obwohl es den Hersteller nicht mehr gibt?

Was das Frontend macht oder nicht macht, anzeigt oder nicht anzeigt ist in diesem Fall (datenbankseitige Löschen von Hersteller- oder Produktdatensätzen) nicht definiert.
Es kann sich so verhalten wie Sie erwarten oder möchten, oder aber auch nicht.

Bearbeitet von Marcus Gesing, 12 June 2013 - 14:23,

Marcus Gesing

Smartstore AG


#14 Micro-Terra

Micro-Terra

    Benutzer

  • Members
  • PunktPunktPunkt
  • 40 Beiträge

Geschrieben: 14 June 2013 - 23:15

Das tun sie aber nicht (s. Beziehungen in Product_Manufacturer_Mapping).


Das stimmt leider nicht.
Ich habe gerade nochmals einen Hersteller angelegt und diesen einem Produkt zugewiesen und anschließend den Hersteller über das Frontend und nicht über die DB gelöscht.
Die Relation zum Hersteller bleibt dem Produkt erhalten. Siehe dazu beigefügter Screenshot. Dem zweiten Query habe ich einen UTCTimestamp hinzugefügt, damit ersichtlich wird, dass das Query nach dem Löschen des Herstellers ausgeführt wurde.

Ich gehe davon aus, dass Sie diese

ALTER TABLE [dbo].[Product_Manufacturer_Mapping] WITH CHECK ADD CONSTRAINT [ProductManufacturer_Manufacturer] FOREIGN KEY([ManufacturerId])
REFERENCES [dbo].[Manufacturer] ([Id])
ON DELETE CASCADE


Beziehung auf der Mapping-Tabelle meinen.

Das würde funktionieren, wenn der Datensatz in der Tabelle Manufacturer gelöscht wurde. Wird er aber nicht, sondern nur auf "deleted" gesetzt. FK-Delete-Cascades greifen dann nicht. Sie sollten über einen AfterInsertTrigger nachdenken.

Was das Frontend macht oder nicht macht, anzeigt oder nicht anzeigt ist in diesem Fall (datenbankseitige Löschen von Hersteller- oder Produktdatensätzen) nicht definiert.
Es kann sich so verhalten wie Sie erwarten oder möchten, oder aber auch nicht.


Ich wiederhole mich gerne - das Löschen erfolgte per Frontend und nicht über die DB.
Und ich bin mir ziemlich sicher, dass das Frontend keine Herstellerrelationen auf dem Produkt anzeigen würde, wenn ich diesen Datensatz in der DB löschen würde ;)



Abgesehen davon erhielt ich eine Bestätigungsmail von Ihrem Support, dass dieser Bug bekannt ist und in einem der nächsten Updates gefixt werden wird.

Angehängte Bilder



#15 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 17 June 2013 - 17:53

Ich habe gerade nochmals einen Hersteller angelegt und diesen einem Produkt zugewiesen und anschließend den Hersteller über das Frontend und nicht über die DB gelöscht.
Die Relation zum Hersteller bleibt dem Produkt erhalten.

Das soll auch so sein. Hersteller werden nicht gelöscht. Sie werden als gelöscht markiert und darum werden auch die Artikelverknüpfungen nicht gelöscht. Nur wenn
datenbankseitig gelöscht wird, greift die kaskadierende Anweisung. Darauf bezog sich meine obige Aussage.

Abgesehen davon erhielt ich eine Bestätigungsmail von Ihrem Support, dass dieser Bug bekannt ist und in einem der nächsten Updates gefixt werden wird.

Da werfen Sie zwei Dinge durcheinander. Das eine sind die Daten und deren Strukturierung in der Datenbank. Das andere welche Daten wie abgefragt werden.
Der Bug bezog sich wohl auf letzteres.

Marcus Gesing

Smartstore AG


#16 Micro-Terra

Micro-Terra

    Benutzer

  • Members
  • PunktPunktPunkt
  • 40 Beiträge

Geschrieben: 17 June 2013 - 18:09

Das soll auch so sein. Hersteller werden nicht gelöscht. Sie werden als gelöscht markiert und darum werden auch die Artikelverknüpfungen nicht gelöscht. Nur wenn
datenbankseitig gelöscht wird, greift die kaskadierende Anweisung. Darauf bezog sich meine obige Aussage.


Wie ist es denn möglich, eine einmal existente Relation zu einem Hersteller über das Frontend zu löschen?

#17 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 17 June 2013 - 20:49

Über Produktdetails -> Register "Hersteller" oder
über Hersteller bearbeiten -> Register "Produkte".

Marcus Gesing

Smartstore AG


#18 Micro-Terra

Micro-Terra

    Benutzer

  • Members
  • PunktPunktPunkt
  • 40 Beiträge

Geschrieben: 17 June 2013 - 21:17

Das geht aber nur, solange der Hersteller nicht über "Hersteller -> löschen" gelöscht wurde! Löscht man erst den Hersteller, was problemlos möglich ist, hat man keine Chance mehr die Referenzierung von Produkt zu Hersteller zu löschen. Und das meine ich!
Sollte dann nicht zumindest das Löschen des Herstellers unterbunden werden?
Oder die Referenzierungen mitgelöscht werden?

#19 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3801 Beiträge

Geschrieben: 18 June 2013 - 12:09

Das ist in der Tat nicht sehr komfortabel. Man könnte
- beim Löschen eines Herstellers auf Nachfrage zugehörige Artikelzuordnungen löschen
- bei den oben erwähnten Datengittern eins Auswahlspalte hinzufügen plus "Auswahl löschen" und "Alle löschen"
- als gelöscht markierte Datensätze mit einer Markierung/Hervorhebung darstellen plus Möglichkeit der Reaktivierung
- das ganze ebenso bei Warengruppen machen

Gibt noch viel zu tun. :)

Marcus Gesing

Smartstore AG


#20 hks-haustechnik

hks-haustechnik

    Benutzer

  • Members
  • PunktPunktPunkt
  • 63 Beiträge

Geschrieben: 19 June 2013 - 15:11

Hallo zusammen,

wir brauchen bei uns auch dringend eine Möglichkeit über das Backend (nicht die Datenbank) Artikel komplett zu löschen.

Mindestens 6mal im Jahr kommt bei uns ein Artikeltausch von größer 50.000 Stück vor.

Da würde uns sicher bald die Datenbank um die Ohren fliegen, wenn die alten nicht mehr existenten Artikel nicht komplett gelöscht werden.

In der Datenbank hier rumzustöbern und als im Backend gelöscht markierte Artikel endgültig zu löschen kann nicht die Lösung sein.

Wenn im Backend ein Artikel gelöscht wird muss er unserer Ansicht nach auf weg sein ohne weiteres Nachbearbeiten.

Wir bitten hier dringend um Abhilfe.

Gruß
Nicolai


Auch markiert mit einem oder mehrerer dieser Schlüsselwörter: shopcheck