sqllogictest
Hex Artifact Content
Not logged in

Artifact 2b6aae95eb703e3ecf3b9f35e2f25799907cad84:


0000: 68 61 73 68 2d 74 68 72 65 73 68 6f 6c 64 20 38  hash-threshold 8
0010: 0a 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0a 43  ..statement ok.C
0020: 52 45 41 54 45 20 54 41 42 4c 45 20 74 31 28 20  REATE TABLE t1( 
0030: 78 20 49 4e 54 45 47 45 52 2c 20 79 20 56 41 52  x INTEGER, y VAR
0040: 43 48 41 52 28 38 29 20 29 0a 0a 73 74 61 74 65  CHAR(8) )..state
0050: 6d 65 6e 74 20 6f 6b 0a 49 4e 53 45 52 54 20 49  ment ok.INSERT I
0060: 4e 54 4f 20 74 31 20 56 41 4c 55 45 53 28 31 2c  NTO t1 VALUES(1,
0070: 27 74 72 75 65 27 29 0a 0a 73 74 61 74 65 6d 65  'true')..stateme
0080: 6e 74 20 6f 6b 0a 49 4e 53 45 52 54 20 49 4e 54  nt ok.INSERT INT
0090: 4f 20 74 31 20 56 41 4c 55 45 53 28 30 2c 27 66  O t1 VALUES(0,'f
00a0: 61 6c 73 65 27 29 0a 0a 73 74 61 74 65 6d 65 6e  alse')..statemen
00b0: 74 20 6f 6b 0a 49 4e 53 45 52 54 20 49 4e 54 4f  t ok.INSERT INTO
00c0: 20 74 31 20 56 41 4c 55 45 53 28 4e 55 4c 4c 2c   t1 VALUES(NULL,
00d0: 27 4e 55 4c 4c 27 29 0a 0a 73 74 61 74 65 6d 65  'NULL')..stateme
00e0: 6e 74 20 6f 6b 0a 43 52 45 41 54 45 20 49 4e 44  nt ok.CREATE IND
00f0: 45 58 20 74 31 69 31 20 4f 4e 20 74 31 28 78 29  EX t1i1 ON t1(x)
0100: 0a 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f 46  ...# EVIDENCE-OF
0110: 3a 20 52 2d 33 38 35 31 35 2d 34 35 32 36 34 20  : R-38515-45264 
0120: 41 6e 20 55 50 44 41 54 45 20 73 74 61 74 65 6d  An UPDATE statem
0130: 65 6e 74 20 69 73 20 75 73 65 64 20 74 6f 20 6d  ent is used to m
0140: 6f 64 69 66 79 20 61 0a 23 20 73 75 62 73 65 74  odify a.# subset
0150: 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 73   of the values s
0160: 74 6f 72 65 64 20 69 6e 20 7a 65 72 6f 20 6f 72  tored in zero or
0170: 20 6d 6f 72 65 20 72 6f 77 73 20 6f 66 20 74 68   more rows of th
0180: 65 20 64 61 74 61 62 61 73 65 20 74 61 62 6c 65  e database table
0190: 0a 23 20 69 64 65 6e 74 69 66 69 65 64 20 62 79  .# identified by
01a0: 20 74 68 65 20 71 75 61 6c 69 66 69 65 64 2d 74   the qualified-t
01b0: 61 62 6c 65 2d 6e 61 6d 65 20 73 70 65 63 69 66  able-name specif
01c0: 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20 74  ied as part of t
01d0: 68 65 20 55 50 44 41 54 45 0a 23 20 73 74 61 74  he UPDATE.# stat
01e0: 65 6d 65 6e 74 2e 0a 0a 73 74 61 74 65 6d 65 6e  ement...statemen
01f0: 74 20 6f 6b 0a 55 50 44 41 54 45 20 74 31 20 53  t ok.UPDATE t1 S
0200: 45 54 20 78 3d 31 20 57 48 45 52 45 20 78 3e 30  ET x=1 WHERE x>0
0210: 0a 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0a 55  ..statement ok.U
0220: 50 44 41 54 45 20 74 31 20 53 45 54 20 78 3d 32  PDATE t1 SET x=2
0230: 20 57 48 45 52 45 20 78 3e 30 0a 0a 73 74 61 74   WHERE x>0..stat
0240: 65 6d 65 6e 74 20 6f 6b 0a 55 50 44 41 54 45 20  ement ok.UPDATE 
0250: 74 31 20 53 45 54 20 79 3d 27 74 72 75 65 27 20  t1 SET y='true' 
0260: 57 48 45 52 45 20 78 3e 30 0a 0a 73 74 61 74 65  WHERE x>0..state
0270: 6d 65 6e 74 20 6f 6b 0a 55 50 44 41 54 45 20 74  ment ok.UPDATE t
0280: 31 20 53 45 54 20 79 3d 27 75 6e 6b 6e 6f 77 6e  1 SET y='unknown
0290: 27 20 57 48 45 52 45 20 78 3e 30 0a 0a 73 74 61  ' WHERE x>0..sta
02a0: 74 65 6d 65 6e 74 20 65 72 72 6f 72 0a 55 50 44  tement error.UPD
02b0: 41 54 45 20 74 31 20 53 45 54 20 7a 3d 27 66 6f  ATE t1 SET z='fo
02c0: 6f 27 0a 0a 73 74 61 74 65 6d 65 6e 74 20 65 72  o'..statement er
02d0: 72 6f 72 0a 55 50 44 41 54 45 20 74 31 20 53 45  ror.UPDATE t1 SE
02e0: 54 20 7a 3d 27 66 6f 6f 27 20 57 48 45 52 45 20  T z='foo' WHERE 
02f0: 78 3e 30 0a 0a 23 20 54 42 44 2d 45 56 49 44 45  x>0..# TBD-EVIDE
0300: 4e 43 45 2d 4f 46 3a 20 52 2d 35 35 38 36 39 2d  NCE-OF: R-55869-
0310: 33 30 35 32 31 20 49 66 20 74 68 65 20 55 50 44  30521 If the UPD
0320: 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 64 6f  ATE statement do
0330: 65 73 20 6e 6f 74 20 68 61 76 65 20 61 0a 23 20  es not have a.# 
0340: 57 48 45 52 45 20 63 6c 61 75 73 65 2c 20 61 6c  WHERE clause, al
0350: 6c 20 72 6f 77 73 20 69 6e 20 74 68 65 20 74 61  l rows in the ta
0360: 62 6c 65 20 61 72 65 20 6d 6f 64 69 66 69 65 64  ble are modified
0370: 20 62 79 20 74 68 65 20 55 50 44 41 54 45 2e 0a   by the UPDATE..
0380: 0a 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0a 55 50  .statement ok.UP
0390: 44 41 54 45 20 74 31 20 53 45 54 20 78 3d 33 0a  DATE t1 SET x=3.
03a0: 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72 74  .query I rowsort
03b0: 0a 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a 29  .SELECT count(*)
03c0: 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20 78   FROM t1 WHERE x
03d0: 3d 33 0a 2d 2d 2d 2d 0a 33 0a 0a 23 20 45 56 49  =3.----.3..# EVI
03e0: 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 35 38 30 39  DENCE-OF: R-5809
03f0: 35 2d 34 36 30 31 33 20 4f 74 68 65 72 77 69 73  5-46013 Otherwis
0400: 65 2c 20 74 68 65 20 55 50 44 41 54 45 20 61 66  e, the UPDATE af
0410: 66 65 63 74 73 20 6f 6e 6c 79 20 74 68 6f 73 65  fects only those
0420: 0a 23 20 72 6f 77 73 20 66 6f 72 20 77 68 69 63  .# rows for whic
0430: 68 20 74 68 65 20 57 48 45 52 45 20 63 6c 61 75  h the WHERE clau
0440: 73 65 20 62 6f 6f 6c 65 61 6e 20 65 78 70 72 65  se boolean expre
0450: 73 73 69 6f 6e 20 69 73 20 74 72 75 65 2e 0a 0a  ssion is true...
0460: 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0a 55 50 44  statement ok.UPD
0470: 41 54 45 20 74 31 20 53 45 54 20 78 3d 31 20 57  ATE t1 SET x=1 W
0480: 48 45 52 45 20 79 3d 27 75 6e 6b 6e 6f 77 6e 27  HERE y='unknown'
0490: 0a 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
04a0: 74 0a 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  t.SELECT count(*
04b0: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
04c0: 78 3d 31 0a 2d 2d 2d 2d 0a 31 0a 0a 23 20 45 56  x=1.----.1..# EV
04d0: 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 35 38 31  IDENCE-OF: R-581
04e0: 32 39 2d 32 30 37 32 39 20 49 74 20 69 73 20 6e  29-20729 It is n
04f0: 6f 74 20 61 6e 20 65 72 72 6f 72 20 69 66 20 74  ot an error if t
0500: 68 65 20 57 48 45 52 45 20 63 6c 61 75 73 65 20  he WHERE clause 
0510: 64 6f 65 73 0a 23 20 6e 6f 74 20 65 76 61 6c 75  does.# not evalu
0520: 61 74 65 20 74 6f 20 74 72 75 65 20 66 6f 72 20  ate to true for 
0530: 61 6e 79 20 72 6f 77 20 69 6e 20 74 68 65 20 74  any row in the t
0540: 61 62 6c 65 20 2d 20 74 68 69 73 20 6a 75 73 74  able - this just
0550: 20 6d 65 61 6e 73 20 74 68 61 74 0a 23 20 74 68   means that.# th
0560: 65 20 55 50 44 41 54 45 20 73 74 61 74 65 6d 65  e UPDATE stateme
0570: 6e 74 20 61 66 66 65 63 74 73 20 7a 65 72 6f 20  nt affects zero 
0580: 72 6f 77 73 2e 0a 0a 73 74 61 74 65 6d 65 6e 74  rows...statement
0590: 20 6f 6b 0a 55 50 44 41 54 45 20 74 31 20 53 45   ok.UPDATE t1 SE
05a0: 54 20 78 3d 31 20 57 48 45 52 45 20 79 3d 27 66  T x=1 WHERE y='f
05b0: 6f 6f 27 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d  oo'..# EVIDENCE-
05c0: 4f 46 3a 20 52 2d 34 30 35 39 38 2d 33 36 35 39  OF: R-40598-3659
05d0: 35 20 46 6f 72 20 65 61 63 68 20 61 66 66 65 63  5 For each affec
05e0: 74 65 64 20 72 6f 77 2c 20 74 68 65 20 6e 61 6d  ted row, the nam
05f0: 65 64 20 63 6f 6c 75 6d 6e 73 0a 23 20 61 72 65  ed columns.# are
0600: 20 73 65 74 20 74 6f 20 74 68 65 20 76 61 6c 75   set to the valu
0610: 65 73 20 66 6f 75 6e 64 20 62 79 20 65 76 61 6c  es found by eval
0620: 75 61 74 69 6e 67 20 74 68 65 20 63 6f 72 72 65  uating the corre
0630: 73 70 6f 6e 64 69 6e 67 20 73 63 61 6c 61 72 0a  sponding scalar.
0640: 23 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a 0a  # expressions...
0650: 73 74 61 74 65 6d 65 6e 74 20 6f 6b 0a 55 50 44  statement ok.UPD
0660: 41 54 45 20 74 31 20 53 45 54 20 78 3d 33 2b 31  ATE t1 SET x=3+1
0670: 0a 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f 72  ..query I rowsor
0680: 74 0a 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 2a  t.SELECT count(*
0690: 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45 20  ) FROM t1 WHERE 
06a0: 78 3d 34 0a 2d 2d 2d 2d 0a 33 0a 0a 23 20 45 56  x=4.----.3..# EV
06b0: 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 33 34 37  IDENCE-OF: R-347
06c0: 35 31 2d 31 38 32 39 33 20 49 66 20 61 20 73 69  51-18293 If a si
06d0: 6e 67 6c 65 20 63 6f 6c 75 6d 6e 2d 6e 61 6d 65  ngle column-name
06e0: 20 61 70 70 65 61 72 73 20 6d 6f 72 65 20 74 68   appears more th
06f0: 61 6e 0a 23 20 6f 6e 63 65 20 69 6e 20 74 68 65  an.# once in the
0700: 20 6c 69 73 74 20 6f 66 20 61 73 73 69 67 6e 6d   list of assignm
0710: 65 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 73 2c  ent expressions,
0720: 20 61 6c 6c 20 62 75 74 20 74 68 65 20 72 69 67   all but the rig
0730: 68 74 6d 6f 73 74 0a 23 20 6f 63 63 75 72 72 65  htmost.# occurre
0740: 6e 63 65 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a  nce is ignored..
0750: 0a 73 6b 69 70 69 66 20 6d 73 73 71 6c 0a 73 74  .skipif mssql.st
0760: 61 74 65 6d 65 6e 74 20 6f 6b 0a 55 50 44 41 54  atement ok.UPDAT
0770: 45 20 74 31 20 53 45 54 20 78 3d 33 2c 20 78 3d  E t1 SET x=3, x=
0780: 34 2c 20 78 3d 35 0a 0a 73 6b 69 70 69 66 20 6d  4, x=5..skipif m
0790: 73 73 71 6c 0a 71 75 65 72 79 20 49 20 72 6f 77  ssql.query I row
07a0: 73 6f 72 74 0a 53 45 4c 45 43 54 20 63 6f 75 6e  sort.SELECT coun
07b0: 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57 48 45  t(*) FROM t1 WHE
07c0: 52 45 20 78 3d 33 0a 2d 2d 2d 2d 0a 30 0a 0a 73  RE x=3.----.0..s
07d0: 6b 69 70 69 66 20 6d 73 73 71 6c 0a 71 75 65 72  kipif mssql.quer
07e0: 79 20 49 20 72 6f 77 73 6f 72 74 0a 53 45 4c 45  y I rowsort.SELE
07f0: 43 54 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d  CT count(*) FROM
0800: 20 74 31 20 57 48 45 52 45 20 78 3d 34 0a 2d 2d   t1 WHERE x=4.--
0810: 2d 2d 0a 30 0a 0a 73 6b 69 70 69 66 20 6d 73 73  --.0..skipif mss
0820: 71 6c 0a 71 75 65 72 79 20 49 20 72 6f 77 73 6f  ql.query I rowso
0830: 72 74 0a 53 45 4c 45 43 54 20 63 6f 75 6e 74 28  rt.SELECT count(
0840: 2a 29 20 46 52 4f 4d 20 74 31 20 57 48 45 52 45  *) FROM t1 WHERE
0850: 20 78 3d 35 0a 2d 2d 2d 2d 0a 33 0a 0a 23 20 45   x=5.----.3..# E
0860: 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 34 30  VIDENCE-OF: R-40
0870: 34 37 32 2d 36 30 34 33 38 20 43 6f 6c 75 6d 6e  472-60438 Column
0880: 73 20 74 68 61 74 20 64 6f 20 6e 6f 74 20 61 70  s that do not ap
0890: 70 65 61 72 20 69 6e 20 74 68 65 20 6c 69 73 74  pear in the list
08a0: 20 6f 66 0a 23 20 61 73 73 69 67 6e 6d 65 6e 74   of.# assignment
08b0: 73 20 61 72 65 20 6c 65 66 74 20 75 6e 6d 6f 64  s are left unmod
08c0: 69 66 69 65 64 2e 0a 0a 71 75 65 72 79 20 49 20  ified...query I 
08d0: 72 6f 77 73 6f 72 74 0a 53 45 4c 45 43 54 20 63  rowsort.SELECT c
08e0: 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20  ount(*) FROM t1 
08f0: 57 48 45 52 45 20 79 3d 27 75 6e 6b 6e 6f 77 6e  WHERE y='unknown
0900: 27 0a 2d 2d 2d 2d 0a 31 0a 0a 73 74 61 74 65 6d  '.----.1..statem
0910: 65 6e 74 20 6f 6b 0a 55 50 44 41 54 45 20 74 31  ent ok.UPDATE t1
0920: 20 53 45 54 20 78 3d 32 0a 0a 71 75 65 72 79 20   SET x=2..query 
0930: 49 20 72 6f 77 73 6f 72 74 0a 53 45 4c 45 43 54  I rowsort.SELECT
0940: 20 63 6f 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74   count(*) FROM t
0950: 31 20 57 48 45 52 45 20 79 3d 27 75 6e 6b 6e 6f  1 WHERE y='unkno
0960: 77 6e 27 0a 2d 2d 2d 2d 0a 31 0a 0a 23 20 45 56  wn'.----.1..# EV
0970: 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 33 36 32  IDENCE-OF: R-362
0980: 33 39 2d 30 34 30 37 37 20 54 68 65 20 73 63 61  39-04077 The sca
0990: 6c 61 72 20 65 78 70 72 65 73 73 69 6f 6e 73 20  lar expressions 
09a0: 6d 61 79 20 72 65 66 65 72 20 74 6f 20 63 6f 6c  may refer to col
09b0: 75 6d 6e 73 0a 23 20 6f 66 20 74 68 65 20 72 6f  umns.# of the ro
09c0: 77 20 62 65 69 6e 67 20 75 70 64 61 74 65 64 2e  w being updated.
09d0: 0a 0a 23 20 45 56 49 44 45 4e 43 45 2d 4f 46 3a  ..# EVIDENCE-OF:
09e0: 20 52 2d 30 34 35 35 38 2d 32 34 34 35 31 20 49   R-04558-24451 I
09f0: 6e 20 74 68 69 73 20 63 61 73 65 20 61 6c 6c 20  n this case all 
0a00: 73 63 61 6c 61 72 20 65 78 70 72 65 73 73 69 6f  scalar expressio
0a10: 6e 73 20 61 72 65 0a 23 20 65 76 61 6c 75 61 74  ns are.# evaluat
0a20: 65 64 20 62 65 66 6f 72 65 20 61 6e 79 20 61 73  ed before any as
0a30: 73 69 67 6e 6d 65 6e 74 73 20 61 72 65 20 6d 61  signments are ma
0a40: 64 65 2e 0a 0a 73 74 61 74 65 6d 65 6e 74 20 6f  de...statement o
0a50: 6b 0a 55 50 44 41 54 45 20 74 31 20 53 45 54 20  k.UPDATE t1 SET 
0a60: 78 3d 78 2b 32 0a 0a 71 75 65 72 79 20 49 20 72  x=x+2..query I r
0a70: 6f 77 73 6f 72 74 0a 53 45 4c 45 43 54 20 63 6f  owsort.SELECT co
0a80: 75 6e 74 28 2a 29 20 46 52 4f 4d 20 74 31 20 57  unt(*) FROM t1 W
0a90: 48 45 52 45 20 78 3d 34 0a 2d 2d 2d 2d 0a 33 0a  HERE x=4.----.3.
0aa0: 0a 23 20 54 42 44 2d 45 56 49 44 45 4e 43 45 2d  .# TBD-EVIDENCE-
0ab0: 4f 46 3a 20 52 2d 31 32 36 31 39 2d 32 34 31 31  OF: R-12619-2411
0ac0: 32 20 54 68 65 20 6f 70 74 69 6f 6e 61 6c 20 63  2 The optional c
0ad0: 6f 6e 66 6c 69 63 74 2d 63 6c 61 75 73 65 20 61  onflict-clause a
0ae0: 6c 6c 6f 77 73 20 74 68 65 0a 23 20 75 73 65 72  llows the.# user
0af0: 20 74 6f 20 6e 6f 6d 69 6e 61 74 65 20 61 20 73   to nominate a s
0b00: 70 65 63 69 66 69 63 20 63 6f 6e 73 74 72 61 69  pecific constrai
0b10: 6e 74 20 63 6f 6e 66 6c 69 63 74 20 72 65 73 6f  nt conflict reso
0b20: 6c 75 74 69 6f 6e 20 61 6c 67 6f 72 69 74 68 6d  lution algorithm
0b30: 0a 23 20 74 6f 20 75 73 65 20 64 75 72 69 6e 67  .# to use during
0b40: 20 74 68 69 73 20 6f 6e 65 20 55 50 44 41 54 45   this one UPDATE
0b50: 20 63 6f 6d 6d 61 6e 64 2e 0a 0a 23 20 54 42 44   command...# TBD
0b60: 2d 45 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d  -EVIDENCE-OF: R-
0b70: 31 32 31 32 33 2d 35 34 30 39 35 20 54 68 65 20  12123-54095 The 
0b80: 74 61 62 6c 65 2d 6e 61 6d 65 20 73 70 65 63 69  table-name speci
0b90: 66 69 65 64 20 61 73 20 70 61 72 74 20 6f 66 20  fied as part of 
0ba0: 61 6e 0a 23 20 55 50 44 41 54 45 20 73 74 61 74  an.# UPDATE stat
0bb0: 65 6d 65 6e 74 20 77 69 74 68 69 6e 20 61 20 74  ement within a t
0bc0: 72 69 67 67 65 72 20 62 6f 64 79 20 6d 75 73 74  rigger body must
0bd0: 20 62 65 20 75 6e 71 75 61 6c 69 66 69 65 64 2e   be unqualified.
0be0: 0a 0a 23 20 54 42 44 2d 45 56 49 44 45 4e 43 45  ..# TBD-EVIDENCE
0bf0: 2d 4f 46 3a 20 52 2d 30 39 36 39 30 2d 33 36 37  -OF: R-09690-367
0c00: 34 39 20 49 6e 20 6f 74 68 65 72 20 77 6f 72 64  49 In other word
0c10: 73 2c 20 74 68 65 20 64 61 74 61 62 61 73 65 2d  s, the database-
0c20: 6e 61 6d 65 2e 20 70 72 65 66 69 78 0a 23 20 6f  name. prefix.# o
0c30: 6e 20 74 68 65 20 74 61 62 6c 65 20 6e 61 6d 65  n the table name
0c40: 20 6f 66 20 74 68 65 20 55 50 44 41 54 45 20 69   of the UPDATE i
0c50: 73 20 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 77 69  s not allowed wi
0c60: 74 68 69 6e 20 74 72 69 67 67 65 72 73 2e 0a 0a  thin triggers...
0c70: 23 20 54 42 44 2d 45 56 49 44 45 4e 43 45 2d 4f  # TBD-EVIDENCE-O
0c80: 46 3a 20 52 2d 30 36 30 38 35 2d 31 33 37 36 31  F: R-06085-13761
0c90: 20 55 6e 6c 65 73 73 20 74 68 65 20 74 61 62 6c   Unless the tabl
0ca0: 65 20 74 6f 20 77 68 69 63 68 20 74 68 65 20 74  e to which the t
0cb0: 72 69 67 67 65 72 20 69 73 0a 23 20 61 74 74 61  rigger is.# atta
0cc0: 63 68 65 64 20 69 73 20 69 6e 20 74 68 65 20 54  ched is in the T
0cd0: 45 4d 50 20 64 61 74 61 62 61 73 65 2c 20 74 68  EMP database, th
0ce0: 65 20 74 61 62 6c 65 20 62 65 69 6e 67 20 75 70  e table being up
0cf0: 64 61 74 65 64 20 62 79 20 74 68 65 0a 23 20 74  dated by the.# t
0d00: 72 69 67 67 65 72 20 70 72 6f 67 72 61 6d 20 6d  rigger program m
0d10: 75 73 74 20 72 65 73 69 64 65 20 69 6e 20 74 68  ust reside in th
0d20: 65 20 73 61 6d 65 20 64 61 74 61 62 61 73 65 20  e same database 
0d30: 61 73 20 69 74 2e 0a 0a 23 20 54 42 44 2d 45 56  as it...# TBD-EV
0d40: 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 32 39 35  IDENCE-OF: R-295
0d50: 31 32 2d 35 34 36 34 34 20 49 66 20 74 68 65 20  12-54644 If the 
0d60: 74 61 62 6c 65 20 74 6f 20 77 68 69 63 68 20 74  table to which t
0d70: 68 65 20 74 72 69 67 67 65 72 20 69 73 0a 23 20  he trigger is.# 
0d80: 61 74 74 61 63 68 65 64 20 69 73 20 69 6e 20 74  attached is in t
0d90: 68 65 20 54 45 4d 50 20 64 61 74 61 62 61 73 65  he TEMP database
0da0: 2c 20 74 68 65 6e 20 74 68 65 20 75 6e 71 75 61  , then the unqua
0db0: 6c 69 66 69 65 64 20 6e 61 6d 65 20 6f 66 20 74  lified name of t
0dc0: 68 65 0a 23 20 74 61 62 6c 65 20 62 65 69 6e 67  he.# table being
0dd0: 20 75 70 64 61 74 65 64 20 69 73 20 72 65 73 6f   updated is reso
0de0: 6c 76 65 64 20 69 6e 20 74 68 65 20 73 61 6d 65  lved in the same
0df0: 20 77 61 79 20 61 73 20 69 74 20 69 73 20 66 6f   way as it is fo
0e00: 72 20 61 0a 23 20 74 6f 70 2d 6c 65 76 65 6c 20  r a.# top-level 
0e10: 73 74 61 74 65 6d 65 6e 74 20 28 62 79 20 73 65  statement (by se
0e20: 61 72 63 68 69 6e 67 20 66 69 72 73 74 20 74 68  arching first th
0e30: 65 20 54 45 4d 50 20 64 61 74 61 62 61 73 65 2c  e TEMP database,
0e40: 20 74 68 65 6e 20 74 68 65 0a 23 20 6d 61 69 6e   then the.# main
0e50: 20 64 61 74 61 62 61 73 65 2c 20 74 68 65 6e 20   database, then 
0e60: 61 6e 79 20 6f 74 68 65 72 20 64 61 74 61 62 61  any other databa
0e70: 73 65 73 20 69 6e 20 74 68 65 20 6f 72 64 65 72  ses in the order
0e80: 20 74 68 65 79 20 77 65 72 65 0a 23 20 61 74 74   they were.# att
0e90: 61 63 68 65 64 29 2e 0a 0a 23 20 54 42 44 2d 45  ached)...# TBD-E
0ea0: 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 31 39  VIDENCE-OF: R-19
0eb0: 36 31 39 2d 34 32 37 36 32 20 54 68 65 20 49 4e  619-42762 The IN
0ec0: 44 45 58 45 44 20 42 59 20 61 6e 64 20 4e 4f 54  DEXED BY and NOT
0ed0: 20 49 4e 44 45 58 45 44 20 63 6c 61 75 73 65 73   INDEXED clauses
0ee0: 20 61 72 65 0a 23 20 6e 6f 74 20 61 6c 6c 6f 77   are.# not allow
0ef0: 65 64 20 6f 6e 20 55 50 44 41 54 45 20 73 74 61  ed on UPDATE sta
0f00: 74 65 6d 65 6e 74 73 20 77 69 74 68 69 6e 20 74  tements within t
0f10: 72 69 67 67 65 72 73 2e 0a 0a 23 20 54 42 44 2d  riggers...# TBD-
0f20: 45 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 35  EVIDENCE-OF: R-5
0f30: 37 33 35 39 2d 35 39 35 35 38 20 54 68 65 20 4c  7359-59558 The L
0f40: 49 4d 49 54 20 61 6e 64 20 4f 52 44 45 52 20 42  IMIT and ORDER B
0f50: 59 20 63 6c 61 75 73 65 73 20 66 6f 72 20 55 50  Y clauses for UP
0f60: 44 41 54 45 0a 23 20 61 72 65 20 75 6e 73 75 70  DATE.# are unsup
0f70: 70 6f 72 74 65 64 20 77 69 74 68 69 6e 20 74 72  ported within tr
0f80: 69 67 67 65 72 73 2c 20 72 65 67 61 72 64 6c 65  iggers, regardle
0f90: 73 73 20 6f 66 20 74 68 65 20 63 6f 6d 70 69 6c  ss of the compil
0fa0: 61 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 0a 23 20  ation options.# 
0fb0: 75 73 65 64 20 74 6f 20 62 75 69 6c 64 20 53 51  used to build SQ
0fc0: 4c 69 74 65 2e 0a 0a 23 20 54 42 44 2d 45 56 49  Lite...# TBD-EVI
0fd0: 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 35 39 35 38  DENCE-OF: R-5958
0fe0: 31 2d 34 34 31 30 34 20 49 66 20 53 51 4c 69 74  1-44104 If SQLit
0ff0: 65 20 69 73 20 62 75 69 6c 74 20 77 69 74 68 20  e is built with 
1000: 74 68 65 0a 23 20 53 51 4c 49 54 45 5f 45 4e 41  the.# SQLITE_ENA
1010: 42 4c 45 5f 55 50 44 41 54 45 5f 44 45 4c 45 54  BLE_UPDATE_DELET
1020: 45 5f 4c 49 4d 49 54 20 63 6f 6d 70 69 6c 65 2d  E_LIMIT compile-
1030: 74 69 6d 65 20 6f 70 74 69 6f 6e 20 74 68 65 6e  time option then
1040: 20 74 68 65 20 73 79 6e 74 61 78 0a 23 20 6f 66   the syntax.# of
1050: 20 74 68 65 20 55 50 44 41 54 45 20 73 74 61 74   the UPDATE stat
1060: 65 6d 65 6e 74 20 69 73 20 65 78 74 65 6e 64 65  ement is extende
1070: 64 20 77 69 74 68 20 6f 70 74 69 6f 6e 61 6c 20  d with optional 
1080: 4f 52 44 45 52 20 42 59 20 61 6e 64 20 4c 49 4d  ORDER BY and LIM
1090: 49 54 0a 23 20 63 6c 61 75 73 65 73 0a 0a 23 20  IT.# clauses..# 
10a0: 54 42 44 2d 45 56 49 44 45 4e 43 45 2d 4f 46 3a  TBD-EVIDENCE-OF:
10b0: 20 52 2d 35 38 38 36 32 2d 34 34 31 36 39 20 49   R-58862-44169 I
10c0: 66 20 61 6e 20 55 50 44 41 54 45 20 73 74 61 74  f an UPDATE stat
10d0: 65 6d 65 6e 74 20 68 61 73 20 61 20 4c 49 4d 49  ement has a LIMI
10e0: 54 20 63 6c 61 75 73 65 2c 0a 23 20 74 68 65 20  T clause,.# the 
10f0: 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f  maximum number o
1100: 66 20 72 6f 77 73 20 74 68 61 74 20 77 69 6c 6c  f rows that will
1110: 20 62 65 20 75 70 64 61 74 65 64 20 69 73 20 66   be updated is f
1120: 6f 75 6e 64 20 62 79 20 65 76 61 6c 75 61 74 69  ound by evaluati
1130: 6e 67 0a 23 20 74 68 65 20 61 63 63 6f 6d 70 61  ng.# the accompa
1140: 6e 79 69 6e 67 20 65 78 70 72 65 73 73 69 6f 6e  nying expression
1150: 20 61 6e 64 20 63 61 73 74 69 6e 67 20 69 74 20   and casting it 
1160: 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 76 61  to an integer va
1170: 6c 75 65 2e 0a 0a 23 20 54 42 44 2d 45 56 49 44  lue...# TBD-EVID
1180: 45 4e 43 45 2d 4f 46 3a 20 52 2d 36 33 35 38 32  ENCE-OF: R-63582
1190: 2d 34 35 31 32 30 20 41 20 6e 65 67 61 74 69 76  -45120 A negativ
11a0: 65 20 76 61 6c 75 65 20 69 73 20 69 6e 74 65 72  e value is inter
11b0: 70 72 65 74 65 64 20 61 73 20 22 6e 6f 0a 23 20  preted as "no.# 
11c0: 6c 69 6d 69 74 22 2e 0a 0a 23 20 54 42 44 2d 45  limit"...# TBD-E
11d0: 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52 2d 31 38  VIDENCE-OF: R-18
11e0: 36 32 38 2d 31 31 39 33 38 20 49 66 20 74 68 65  628-11938 If the
11f0: 20 4c 49 4d 49 54 20 65 78 70 72 65 73 73 69 6f   LIMIT expressio
1200: 6e 20 65 76 61 6c 75 61 74 65 73 20 74 6f 0a 23  n evaluates to.#
1210: 20 6e 6f 6e 2d 6e 65 67 61 74 69 76 65 20 76 61   non-negative va
1220: 6c 75 65 20 4e 20 61 6e 64 20 74 68 65 20 55 50  lue N and the UP
1230: 44 41 54 45 20 73 74 61 74 65 6d 65 6e 74 20 68  DATE statement h
1240: 61 73 20 61 6e 20 4f 52 44 45 52 20 42 59 20 63  as an ORDER BY c
1250: 6c 61 75 73 65 2c 0a 23 20 74 68 65 6e 20 61 6c  lause,.# then al
1260: 6c 20 72 6f 77 73 20 74 68 61 74 20 77 6f 75 6c  l rows that woul
1270: 64 20 62 65 20 75 70 64 61 74 65 64 20 69 6e 20  d be updated in 
1280: 74 68 65 20 61 62 73 65 6e 63 65 20 6f 66 20 74  the absence of t
1290: 68 65 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 0a  he LIMIT clause.
12a0: 23 20 61 72 65 20 73 6f 72 74 65 64 20 61 63 63  # are sorted acc
12b0: 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 4f 52  ording to the OR
12c0: 44 45 52 20 42 59 20 61 6e 64 20 74 68 65 20 66  DER BY and the f
12d0: 69 72 73 74 20 4e 20 75 70 64 61 74 65 64 2e 0a  irst N updated..
12e0: 0a 23 20 54 42 44 2d 45 56 49 44 45 4e 43 45 2d  .# TBD-EVIDENCE-
12f0: 4f 46 3a 20 52 2d 33 30 39 35 35 2d 33 38 33 32  OF: R-30955-3832
1300: 34 20 49 66 20 74 68 65 20 55 50 44 41 54 45 20  4 If the UPDATE 
1310: 73 74 61 74 65 6d 65 6e 74 20 61 6c 73 6f 20 68  statement also h
1320: 61 73 20 61 6e 20 4f 46 46 53 45 54 0a 23 20 63  as an OFFSET.# c
1330: 6c 61 75 73 65 2c 20 74 68 65 6e 20 69 74 20 69  lause, then it i
1340: 73 20 73 69 6d 69 6c 61 72 6c 79 20 65 76 61 6c  s similarly eval
1350: 75 61 74 65 64 20 61 6e 64 20 63 61 73 74 20 74  uated and cast t
1360: 6f 20 61 6e 20 69 6e 74 65 67 65 72 20 76 61 6c  o an integer val
1370: 75 65 2e 0a 23 20 49 66 20 74 68 65 20 4f 46 46  ue..# If the OFF
1380: 53 45 54 20 65 78 70 72 65 73 73 69 6f 6e 20 65  SET expression e
1390: 76 61 6c 75 61 74 65 73 20 74 6f 20 61 20 6e 6f  valuates to a no
13a0: 6e 2d 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65  n-negative value
13b0: 20 4d 2c 20 74 68 65 6e 20 74 68 65 0a 23 20 66   M, then the.# f
13c0: 69 72 73 74 20 4d 20 72 6f 77 73 20 61 72 65 20  irst M rows are 
13d0: 73 6b 69 70 70 65 64 20 61 6e 64 20 74 68 65 20  skipped and the 
13e0: 66 6f 6c 6c 6f 77 69 6e 67 20 4e 20 72 6f 77 73  following N rows
13f0: 20 75 70 64 61 74 65 64 20 69 6e 73 74 65 61 64   updated instead
1400: 2e 0a 0a 23 20 54 42 44 2d 45 56 49 44 45 4e 43  ...# TBD-EVIDENC
1410: 45 2d 4f 46 3a 20 52 2d 31 39 34 38 36 2d 33 35  E-OF: R-19486-35
1420: 38 32 38 20 49 66 20 74 68 65 20 55 50 44 41 54  828 If the UPDAT
1430: 45 20 73 74 61 74 65 6d 65 6e 74 20 68 61 73 20  E statement has 
1440: 6e 6f 20 4f 52 44 45 52 20 42 59 0a 23 20 63 6c  no ORDER BY.# cl
1450: 61 75 73 65 2c 20 74 68 65 6e 20 61 6c 6c 20 72  ause, then all r
1460: 6f 77 73 20 74 68 61 74 20 77 6f 75 6c 64 20 62  ows that would b
1470: 65 20 75 70 64 61 74 65 64 20 69 6e 20 74 68 65  e updated in the
1480: 20 61 62 73 65 6e 63 65 20 6f 66 20 74 68 65 0a   absence of the.
1490: 23 20 4c 49 4d 49 54 20 63 6c 61 75 73 65 20 61  # LIMIT clause a
14a0: 72 65 20 61 73 73 65 6d 62 6c 65 64 20 69 6e 20  re assembled in 
14b0: 61 6e 20 61 72 62 69 74 72 61 72 79 20 6f 72 64  an arbitrary ord
14c0: 65 72 20 62 65 66 6f 72 65 20 61 70 70 6c 79 69  er before applyi
14d0: 6e 67 20 74 68 65 0a 23 20 4c 49 4d 49 54 20 61  ng the.# LIMIT a
14e0: 6e 64 20 4f 46 46 53 45 54 20 63 6c 61 75 73 65  nd OFFSET clause
14f0: 73 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 77  s to determine w
1500: 68 69 63 68 20 61 72 65 20 61 63 74 75 61 6c 6c  hich are actuall
1510: 79 20 75 70 64 61 74 65 64 2e 0a 0a 23 20 54 42  y updated...# TB
1520: 44 2d 45 56 49 44 45 4e 43 45 2d 4f 46 3a 20 52  D-EVIDENCE-OF: R
1530: 2d 31 30 39 32 37 2d 32 36 31 33 33 20 54 68 65  -10927-26133 The
1540: 20 4f 52 44 45 52 20 42 59 20 63 6c 61 75 73 65   ORDER BY clause
1550: 20 6f 6e 20 61 6e 20 55 50 44 41 54 45 20 73 74   on an UPDATE st
1560: 61 74 65 6d 65 6e 74 0a 23 20 69 73 20 75 73 65  atement.# is use
1570: 64 20 6f 6e 6c 79 20 74 6f 20 64 65 74 65 72 6d  d only to determ
1580: 69 6e 65 20 77 68 69 63 68 20 72 6f 77 73 20 66  ine which rows f
1590: 61 6c 6c 20 77 69 74 68 69 6e 20 74 68 65 20 4c  all within the L
15a0: 49 4d 49 54 2e 20 54 68 65 20 6f 72 64 65 72 0a  IMIT. The order.
15b0: 23 20 69 6e 20 77 68 69 63 68 20 72 6f 77 73 20  # in which rows 
15c0: 61 72 65 20 6d 6f 64 69 66 69 65 64 20 69 73 20  are modified is 
15d0: 61 72 62 69 74 72 61 72 79 20 61 6e 64 20 69 73  arbitrary and is
15e0: 20 6e 6f 74 20 69 6e 66 6c 75 65 6e 63 65 64 20   not influenced 
15f0: 62 79 20 74 68 65 0a 23 20 4f 52 44 45 52 20 42  by the.# ORDER B
1600: 59 20 63 6c 61 75 73 65 2e 0a                    Y clause..