2016-05-20 15 views
0

Ich versuche, Zeilen aus einer Tabelle in SQL Server 2008 zu löschen, die weder Fremdschlüsseleinschränkungen noch Trigger hat. Wenn ich den Nachrichtenabschnitt überprüfe, zeigt es die betroffenen Zeilen an, aber wenn ich die Tabelle überprüfe, sind Reihen noch vorhanden. Anbei ist das Bild als Referenz. Ich bin mir sehr sicher, dass es an dieser Tabelle keine Einschränkungen gibt. Was könnte das Problem sein?Löschen einer Zeile in einer Tabelle ohne Fremdschlüsseleinschränkungen nicht möglich

enter image description here

+0

welche Einschränkung beziehen Sie sich einstellen. Bitte identifizieren Sie die Einschränkung – PyNoob

+0

(Ich kann das Bild nicht sehen, srry) Sind Sie sicher, dass Sie löschen und aus der gleichen Tabelle auswählen? (Gleiche Datenbank/dasselbe Schema) – mxix

+0

primäre/Fremdschlüssel oder Standardbeschränkungen. – whywake

Antwort

0

Sie sys-Tabellen verwenden können constrints, Schlüssel, etc. Basierend auf diesen Ergebnissen abzufragen, können Sie aus Ihrer Tabelle löschen. Unten finden Sie eine Beispielabfrage, die Tabellenbeschränkungen zurückgibt.

SELECT 
    TableName = t.Name, 
    ColumnName = c.Name, 
    dc.type, 
    dc.type_desc, 
    dc.name, 
    dc.definition 
FROM sys.tables t 
INNER JOIN sys.default_constraints dc ON t.object_id = dc.parent_object_id 
INNER JOIN sys.columns c ON dc.parent_object_id = c.object_id AND c.column_id = dc.parent_column_id 
where t.name = 'yourtablename' 
ORDER BY t.Name 
0

Wenn es wirklich kein Trigger auf dem Tisch aus Sie löschen, dann prüfen alle verknüpften Tabellen, die FKs auf dem Tisch aus Sie löschen (und im Gegenzug alle FKs zu diesen Tabellen). Die FKs würden ON DELETE CASCADE gesetzt haben, so dass das Löschen tatsächlich funktioniert (anstatt einen Fehler zu werfen), nur könnte ein Trigger in irgendeiner dieser FK-tragenden Tabellen die Zeilen sofort wieder hinzufügen.

Sie könnten eine rows affected Nachricht für alle diese potenziellen Auslöser Operationen nicht unbedingt sehen, weil Trigger SET NOCOUNT ON, bevor sie eine DML tun ...

Verwandte Themen