1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
4
<title>Data Change Notification Callbacks</title>
5
<style type="text/css">
8
font-family: Verdana, sans-serif;
13
a:visited { color: #734559 }
15
.logo { position:absolute; margin:3px; }
31
.toolbar a { color: white; text-decoration: none; padding: 6px 12px; }
32
.toolbar a:visited { color: white; }
33
.toolbar a:hover { color: #044a64; background: white; }
35
.content { margin: 5%; }
36
.content dt { font-weight:bold; }
37
.content dd { margin-bottom: 25px; margin-left:20%; }
38
.content ul { padding:0px; padding-left: 15px; margin:0px; }
41
.se { background: url(../images/se.gif) 100% 100% no-repeat #044a64}
42
.sw { background: url(../images/sw.gif) 0% 100% no-repeat }
43
.ne { background: url(../images/ne.gif) 100% 0% no-repeat }
44
.nw { background: url(../images/nw.gif) 0% 0% no-repeat }
46
/* Things for "fancyformat" documents start here. */
47
.fancy img+p {font-style:italic}
48
.fancy .codeblock i { color: darkblue; }
49
.fancy h1,.fancy h2,.fancy h3,.fancy h4 {font-weight:normal;color:#044a64}
50
.fancy h2 { margin-left: 10px }
51
.fancy h3 { margin-left: 20px }
52
.fancy h4 { margin-left: 30px }
53
.fancy th {white-space:nowrap;text-align:left;border-bottom:solid 1px #444}
54
.fancy th, .fancy td {padding: 0.2em 1ex; vertical-align:top}
55
.fancy #toc a { color: darkblue ; text-decoration: none }
56
.fancy .todo { color: #AA3333 ; font-style : italic }
57
.fancy .todo:before { content: 'TODO:' }
58
.fancy p.todo { border: solid #AA3333 1px; padding: 1ex }
59
.fancy img { display:block; }
60
.fancy :link:hover, .fancy :visited:hover { background: wheat }
61
.fancy p,.fancy ul,.fancy ol { margin: 1em 5ex }
62
.fancy li p { margin: 1em 0 }
63
/* End of "fancyformat" specific rules. */
69
<div><!-- container div to satisfy validator -->
71
<a href="../index.html">
72
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite Logo"
74
<div><!-- IE hack to prevent disappearing logo--></div>
75
<div class="tagline">Small. Fast. Reliable.<br>Choose any three.</div>
77
<table width=100% style="clear:both"><tr><td>
78
<div class="se"><div class="sw"><div class="ne"><div class="nw">
79
<table width=100% style="padding:0;margin:0;cell-spacing:0"><tr>
82
<a href="../about.html">About</a>
83
<a href="../sitemap.html">Sitemap</a>
84
<a href="../docs.html">Documentation</a>
85
<a href="../download.html">Download</a>
86
<a href="../copyright.html">License</a>
87
<a href="../news.html">News</a>
88
<a href="../support.html">Support</a>
91
gMsg = "Search SQLite Docs..."
92
function entersearch() {
93
var q = document.getElementById("q");
94
if( q.value == gMsg ) { q.value = "" }
95
q.style.color = "black"
96
q.style.fontStyle = "normal"
98
function leavesearch() {
99
var q = document.getElementById("q");
100
if( q.value == "" ) {
102
q.style.color = "#044a64"
103
q.style.fontStyle = "italic"
108
<div style="padding:0 1em 0px 0;white-space:nowrap">
109
<form name=f method="GET" action="http://www.sqlite.org/search">
110
<input id=q name=q type=text
111
onfocus="entersearch()" onblur="leavesearch()" style="width:24ex;padding:1px 1ex; border:solid white 1px; font-size:0.9em ; font-style:italic;color:#044a64;" value="Search SQLite Docs...">
112
<input type=submit value="Go" style="border:solid white 1px;background-color:#044a64;color:white;font-size:0.9em;padding:0 1ex">
116
</div></div></div></div>
118
<div class=startsearch></div>
120
<a href="intro.html"><h2>SQLite C Interface</h2></a><h2>Data Change Notification Callbacks</h2><blockquote><pre>void *sqlite3_update_hook(
122
void(*)(void *,int ,char const *,char const *,sqlite3_int64),
125
</pre></blockquote><p>
126
The sqlite3_update_hook() interface registers a callback function
127
with the <a href="../c3ref/sqlite3.html">database connection</a> identified by the first argument
128
to be invoked whenever a row is updated, inserted or deleted.
129
Any callback set by a previous call to this function
130
for the same database connection is overridden.</p>
132
<p>The second argument is a pointer to the function to invoke when a
133
row is updated, inserted or deleted.
134
The first argument to the callback is a copy of the third argument
135
to sqlite3_update_hook().
136
The second callback argument is one of <a href="../c3ref/c_alter_table.html">SQLITE_INSERT</a>, <a href="../c3ref/c_alter_table.html">SQLITE_DELETE</a>,
137
or <a href="../c3ref/c_alter_table.html">SQLITE_UPDATE</a>, depending on the operation that caused the callback
139
The third and fourth arguments to the callback contain pointers to the
140
database and table name containing the affected row.
141
The final callback parameter is the <a href="../lang_createtable.html#rowid">rowid</a> of the row.
142
In the case of an update, this is the <a href="../lang_createtable.html#rowid">rowid</a> after the update takes place.</p>
144
<p>The update hook is not invoked when internal system tables are
145
modified (i.e. sqlite_master and sqlite_sequence).</p>
147
<p>In the current implementation, the update hook
148
is not invoked when duplication rows are deleted because of an
149
<a href="../lang_conflict.html">ON CONFLICT REPLACE</a> clause. Nor is the update hook
150
invoked when rows are deleted using the <a href="../lang_delete.html#truncateopt">truncate optimization</a>.
151
The exceptions defined in this paragraph might change in a future
152
release of SQLite.</p>
154
<p>The update hook implementation must not do anything that will modify
155
the database connection that invoked the update hook. Any actions
156
to modify the database connection must be deferred until after the
157
completion of the <a href="../c3ref/step.html">sqlite3_step()</a> call that triggered the update hook.
158
Note that <a href="../c3ref/prepare.html">sqlite3_prepare_v2()</a> and <a href="../c3ref/step.html">sqlite3_step()</a> both modify their
159
database connections for the meaning of "modify" in this paragraph.</p>
161
<p>The sqlite3_update_hook(D,C,P) function
162
returns the P argument from the previous call
163
on the same <a href="../c3ref/sqlite3.html">database connection</a> D, or NULL for
164
the first call on D.</p>
166
<p>See also the <a href="../c3ref/commit_hook.html">sqlite3_commit_hook()</a> and <a href="../c3ref/commit_hook.html">sqlite3_rollback_hook()</a>
168
</p><p>See also lists of
169
<a href="objlist.html">Objects</a>,
170
<a href="constlist.html">Constants</a>, and
171
<a href="funclist.html">Functions</a>.</p>