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>Count The Number Of Rows Modified</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>Count The Number Of Rows Modified</h2><blockquote><pre>int sqlite3_changes(sqlite3*);
121
</pre></blockquote><p>
122
This function returns the number of database rows that were changed
123
or inserted or deleted by the most recently completed SQL statement
124
on the <a href="../c3ref/sqlite3.html">database connection</a> specified by the first parameter.
125
Only changes that are directly specified by the <a href="../lang_insert.html">INSERT</a>, <a href="../lang_update.html">UPDATE</a>,
126
or <a href="../lang_delete.html">DELETE</a> statement are counted. Auxiliary changes caused by
127
triggers or <a href="../foreignkeys.html#fk_actions">foreign key actions</a> are not counted. Use the
128
<a href="../c3ref/total_changes.html">sqlite3_total_changes()</a> function to find the total number of changes
129
including changes caused by triggers and foreign key actions.</p>
131
<p>Changes to a view that are simulated by an <a href="../lang_createtrigger.html#instead_of_trigger">INSTEAD OF trigger</a>
132
are not counted. Only real table changes are counted.</p>
134
<p>A "row change" is a change to a single row of a single table
135
caused by an INSERT, DELETE, or UPDATE statement. Rows that
136
are changed as side effects of <a href="../lang_replace.html">REPLACE</a> constraint resolution,
137
rollback, ABORT processing, <a href="../lang_droptable.html">DROP TABLE</a>, or by any other
138
mechanisms do not count as direct row changes.</p>
140
<p>A "trigger context" is a scope of execution that begins and
141
ends with the script of a <a href="../lang_createtrigger.html">trigger</a>.
142
Most SQL statements are
143
evaluated outside of any trigger. This is the "top level"
144
trigger context. If a trigger fires from the top level, a
145
new trigger context is entered for the duration of that one
146
trigger. Subtriggers create subcontexts for their duration.</p>
148
<p>Calling <a href="../c3ref/exec.html">sqlite3_exec()</a> or <a href="../c3ref/step.html">sqlite3_step()</a> recursively does
149
not create a new trigger context.</p>
151
<p>This function returns the number of direct row changes in the
152
most recent INSERT, UPDATE, or DELETE statement within the same
155
<p>Thus, when called from the top level, this function returns the
156
number of changes in the most recent INSERT, UPDATE, or DELETE
157
that also occurred at the top level. Within the body of a trigger,
158
the sqlite3_changes() interface can be called to find the number of
159
changes in the most recently completed INSERT, UPDATE, or DELETE
160
statement within the body of the same trigger.
161
However, the number returned does not include changes
162
caused by subtriggers since those have their own context.</p>
164
<p>See also the <a href="../c3ref/total_changes.html">sqlite3_total_changes()</a> interface, the
165
<a href="../pragma.html#pragma_count_changes">count_changes pragma</a>, and the <a href="../lang_corefunc.html#changes">changes() SQL function</a>.</p>
167
<p>If a separate thread makes changes on the same database connection
168
while <a href="../c3ref/changes.html">sqlite3_changes()</a> is running then the value returned
169
is unpredictable and not meaningful.
170
</p><p>See also lists of
171
<a href="objlist.html">Objects</a>,
172
<a href="constlist.html">Constants</a>, and
173
<a href="funclist.html">Functions</a>.</p>