MsiViewModify-Funktion (msiquery.h)

Die MsiViewModify-Funktion aktualisiert einen abgerufenen Datensatz.

Syntax

UINT MsiViewModify(
  [in] MSIHANDLE hView,
  [in] MSIMODIFY eModifyMode,
  [in] MSIHANDLE hRecord
);

Parameter

[in] hView

Handle für eine Ansicht.

[in] eModifyMode

Gibt den Änderungsmodus an. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
MSIMODIFY_SEEK
-1
Aktualisiert die Informationen im angegebenen Datensatz, ohne die Position im Resultset zu ändern und ohne sich auf nachfolgende Abrufvorgänge auszuwirken. Der Datensatz kann dann für nachfolgende Update-, Delete- und Refresh-Aktionen verwendet werden. Alle Primärschlüsselspalten der Tabelle müssen sich in der Abfrage befinden, und der Datensatz muss mindestens so viele Felder wie die Abfrage enthalten. Seek kann nicht mit Abfragen mit mehreren Tabellen verwendet werden. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält. Siehe auch die Hinweise.
MSIMODIFY_REFRESH
0
Aktualisiert die Informationen im Datensatz. Muss zuerst MsiViewFetch mit demselben Datensatz aufrufen. Führt bei einer gelöschten Zeile zu einem Fehler. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen.
MSIMODIFY_INSERT
1
Fügt einen Datensatz ein. Löst einen Fehler aus, wenn eine Zeile mit denselben Primärschlüsseln vorhanden ist. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_UPDATE
2
Aktualisiert einen vorhandenen Datensatz. Nur nichtprimäre Schlüssel. Muss zuerst MsiViewFetch aufrufen. Führt bei einem gelöschten Datensatz zu einem Fehler. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind.
MSIMODIFY_ASSIGN
3
Schreibt aktuelle Daten am Cursor in eine Tabellenzeile. Aktualisiert einen Datensatz, wenn die Primärschlüssel mit einer vorhandenen Zeile übereinstimmen, und fügt ein, wenn sie nicht übereinstimmen. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_REPLACE
4
Aktualisiert oder löscht einen Datensatz und fügt einen Datensatz in eine Tabelle ein. Muss zuerst MsiViewFetch mit demselben Datensatz aufrufen. Aktualisiert einen Datensatz, wenn die Primärschlüssel unverändert sind. Löscht die alte Zeile und fügt neue ein, wenn sich Primärschlüssel geändert haben. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_MERGE
5
Fügt einen Datensatz in eine Tabelle ein oder überprüft diesen. Fügt ein, wenn Primärschlüssel keiner Zeile entsprechen, und überprüft, ob eine Übereinstimmung vorhanden ist. Führt zu einem Fehler, wenn der Datensatz nicht mit den Daten in der Tabelle übereinstimmt. Führt zu einem Fehler, wenn ein Datensatz mit einem doppelten Schlüssel vorhanden ist, der nicht identisch ist. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_DELETE
6
Entfernen Sie eine Zeile aus der Tabelle. Sie müssen zuerst die MsiViewFetch-Funktion mit demselben Datensatz aufrufen. Führt zu einem Fehler, wenn die Zeile gelöscht wurde. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_INSERT_TEMPORARY
7
Fügt einen temporären Datensatz ein. Die Informationen sind nicht persistent. Löst einen Fehler aus, wenn eine Zeile mit demselben Primärschlüssel vorhanden ist. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_VALIDATE
8
Überprüft einen Datensatz. Es erfolgt keine Überprüfung über Joins hinweg. Sie müssen zuerst die MsiViewFetch-Funktion mit demselben Datensatz aufrufen. Abrufen von Validierungsfehlern mit MsiViewGetError. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_VALIDATE_NEW
9
Überprüfen Sie einen neuen Datensatz. Es erfolgt keine Überprüfung über Joins hinweg. Sucht nach doppelten Schlüsseln. Abrufen von Validierungsfehlern durch Aufrufen von MsiViewGetError. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_VALIDATE_FIELD
10
Überprüft Felder eines abgerufenen oder neuen Datensatzes. Kann ein oder mehrere Felder eines unvollständigen Datensatzes überprüfen. Abrufen von Validierungsfehlern durch Aufrufen von MsiViewGetError. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
MSIMODIFY_VALIDATE_DELETE
11
Überprüft einen Datensatz, der später gelöscht wird. Sie müssen zuerst MsiViewFetch aufrufen. Löst einen Fehler aus, wenn eine andere Zeile auf die Primärschlüssel dieser Zeile verweist. Bei der Überprüfung wird nicht überprüft, ob die Primärschlüssel dieser Zeile in Eigenschaften oder Zeichenfolgen enthalten sind. Überprüft nicht, ob eine Spalte ein Fremdschlüssel für mehrere Tabellen ist. Abrufen von Validierungsfehlern durch Aufrufen von MsiViewGetError. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Verknüpfungen enthält.

[in] hRecord

Handle für den zu ändernden Datensatz.

Rückgabewert

Die MsiViewModify-Funktion gibt die folgenden Werte zurück:

Beachten Sie, dass diese Funktion in Situationen mit wenig Arbeitsspeicher eine STATUS_NO_MEMORY Ausnahme auslösen kann.

Hinweise

Die werte MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW, MSIMODIFY_VALIDATE_FIELD und MSIMODIFY_VALIDATE_DELETE der MsiViewModify-Funktion führen keine tatsächlichen Updates durch. Sie stellen sicher, dass die Daten im Datensatz gültig sind. Die Verwendung dieser Validierungsenumeration erfordert, dass die Datenbank die _Validation Tabelle enthält.

Sie können MSIMODIFY_UPDATE oder MSIMODIFY_DELETE mit einem Datensatz sofort aufrufen, nachdem Sie MSIMODIFY_INSERT, MSIMODIFY_INSERT_TEMPORARY oder MSIMODIFY_SEEK verwendet haben, sofern Sie das 0. Feld des eingefügten oder gesuchten Datensatzes NICHT geändert haben.

Zum Ausführen einer SQL-Anweisung muss eine Sicht erstellt werden. Eine Ansicht, die kein Resultset erstellt, z. B. CREATE TABLE oder INSERT INTO, kann jedoch nicht mit MsiViewModify verwendet werden, um Tabellen in der Ansicht zu aktualisieren.

Sie können einen Datensatz, der Binärdaten enthält, nicht aus einer Datenbank abrufen und dann diesen Datensatz verwenden, um die Daten in eine andere Datenbank einzufügen. Um Binärdaten aus einer Datenbank in eine andere zu verschieben, sollten Sie die Daten in eine Datei exportieren und sie dann mithilfe einer Abfrage und des MsiRecordSetStream in die neue Datenbank importieren. Dadurch wird sichergestellt, dass jede Datenbank über eine eigene Kopie der Binärdaten verfügt.

Beachten Sie, dass benutzerdefinierte Aktionen einer Datenbank nur temporäre Zeilen, Spalten oder Tabellen hinzufügen, ändern oder entfernen können. Benutzerdefinierte Aktionen können keine persistenten Daten in einer Datenbank ändern, z. B. Daten, die Teil der auf dem Datenträger gespeicherten Datenbank sind. Weitere Informationen finden Sie unter Zugreifen auf die aktuelle Installer-Sitzung innerhalb einer benutzerdefinierten Aktion.

Wenn die Funktion fehlschlägt, können Sie erweiterte Fehlerinformationen mithilfe von MsiGetLastErrorRecord abrufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP
Zielplattform Windows
Kopfzeile msiquery.h
Bibliothek Msi.lib
DLL Msi.dll

Weitere Informationen

Allgemeine Datenbankzugriffsfunktionen