-
- Preview browser
- Page designer
- DQL editor
- Application wide settings
- Security settings
- Page caching module
- Modules
- Snippets
- Actions
- Context editor
- Task editor
- Scheduler editor
- Search engine editor
- Web server console
- Site layout editor
- Template editor
- Robots editor
- Style definitions
- Database manipulation
- Table designer
- Transfer editor
- Reporter
- Deployment module
- Deployment server settings
- Debugger
- .end
- .form header
- .form trailer
- .items
- assign
- application status
- backup db
- begin transaction
- break
- call menu
- call program
- case
- cluster by
- commit
- connect
- copy all from
- data-entry
- db status
- delete records
- define
- disconnect
- do
- documents
- exec SQL
- else
- end
- enter a record
- error messages off
- error messages on
- exit
- export
- for
- global
- if
- import
- imports
- in
- input using
- install application
- into
- list records
- lock
- lock db
- modify records
- message
- named
- others
- prompt
- query selection
- record entry
- records
- reorganize
- restore db
- rollback
- run procedure
- servers
- temp
- then
- tran off
- tran on
- unclustered
- unlock
- unlock db
- via form
- while
- with
- abs
- acos
- addressof
- ampm
- anylookup
- asin
- atan
- atan2
- ceil
- CHR
- concat
- ConsoleCopy
- ConsoleMemoCopy
- ConsoleShow
- ConsoleWriteToFile
- cos
- cosh
- date
- DatePicker
- day
- DEOS
- DialogOpen
- DialogOpenRelated
- DocumentCloseName
- DoesObjectExist
- ExecDQL
- ExecuteFile
- exp
- FileExecDQL
- firstc
- firstlast
- firstw
- FixedWidth
- floor
- futurevalue
- GetCurrent
- GetVar
- hours
- if
- installment
- jointext
- julian
- lastc
- lastfirst
- lastw
- length
- log
- log10
- lower
- MemoChunk
- MemoCopy
- MemoDecodePair
- MemoExecDQL
- MemoFind
- MemoGetGlobal
- MemoLength
- MemoMemoCopy
- MemoMemoReplace
- MemoReadFromFile
- MemoReplace
- MemoSetGlobal
- MemoStringBetween
- MemoStringFrom
- MemoStringTo
- MemoWordCount
- MemoWriteToFile
- midc
- midw
- minutes
- mod
- month
- OpenForm
- OpenMenu
- OpenProcedure
- OpenReport
- periods
- power
- presentvalue
- proper
- random
- rate
- RefreshForm
- RefreshScreen
- RefreshStatus
- Remote
- Remote authentication
- Remote POP3
- Remote IMAP
- Remote SMTP
- Remote XML
- seconds
- SetColor
- SetCurrent
- SetFocus
- SetLabelText
- SetMemoValue
- SetState
- SetStyle
- SetValue
- SetVar
- sin
- sinh
- spellcurrency
- spelldate
- spellmonth
- spellnumber
- spellweekday
- sqrt
- StringBetween
- StringEscape
- StringFind
- StringFrom
- StringReplace
- StringTo
- tan
- tanh
- textpos
- timeampm
- ToText
- UniqueID
- upper
- Wait
- weekday
- WriteToFile
- year
- yearday
- yearweek
- " (quotation marks)
- () (parentheses)
- + (addition)
- , (comma)
- - (subtraction)
- . (period)
- -- (comment)
- / (division)
- * (multiplication)
- * (asterisk)
- ? (question mark)
- ~ (tilde)
- : (colon)
- := (assignment operator)
- ; (semicolon)
- < (less than)
- <= (less than or equal to)
- = (equals)
- > (greater than)
- >= (greater than or equal to)
- all
- all files
- and
- any
- between
- blank
- count
- count of
- file
- highest of
- in groups
- in groups with group-totals
- in order
- in reverse
- item (Statistical)
- item (Conditional Statistical)
- lock files
- lock nothing
- lock records
- lookup
- lowest of
- max
- mean
- mean of
- min
- not
- number
- numeric string
- or
- pause
- percent
- selected record
- std.dev.
- std.err.
- sum
- sum of
- text
- time
- to
- variance
- window
- Rules for queries
- * (asterisk)
- ? (question mark)
- ~ (tilde)
- and
- or
- not
- ( ) (parentheses)
- Debug querys
- Livetext tags
- xdg3 query
- Sessions
- Pagination
- Free text search
- Intro on fields
- Text
- Hidden
- Date
- Dropdown
- List
- Checkbox
- Radio button
- Text edit
- Redactor (richtext)
- CKEditor
- TinyMCE
- Intro
- hasPrismConnection
- doAction
- doDerivation
- doMenuItem
- doPrismDerivation
- setFormField
- runPrismFunction
- @GetDefinition
- . document
- . listcommands
- . listdocuments
- . listdrives
- . listfiles
- . listfunctions
- . listinternals
- . listoperators
- . listrelated
- . listtables
- . object
- . table
- . testdql
- @SetDefinition
- . document
- . object
- Extra modules intro
- python
- Qt
- wkhtmltopdf
- PySide
- PyXCC
- django
- Apache
- LightTPD
- nginx
- pywin32
- flup
- cssutils
- Pillow
- psutil
- mysqldb
- psycopg2
- pyodbc
- python_dateutil
- requests
- suds-ews
- setuptools
- Whoosh
- wmi
- django-send
- bootstrap
- bootstrapmultiselect
- jquery
- jqueryui
- ckedit
- tinymce
- redactor
- JavaScript EU VAT Number Validation
- feedparser
- beautifulsoup
- appsdir
- six
- pycparser
- pyOpenSSL
- cryptography
- cffi
- enum34
- pyasn1
- idna
- ipaddress
- PyYAML
- coverage
- coveralls
- docopt
- mock
- funcsigs
- pbr
- nose
- paypalrestsdk
- paypal
- libcurl
- 7zipcpp
- cef
- cpp-jwt
commit
Type
Procedural Command
Purpose
The commit command is used to mark the end of a transaction. A procedure can contain any number of commit commands.
Syntax
commit .
A transaction can be all or any part of a DQL Procedure that changes data and must be processed as a single unit to maintain integrity (such as a procedure that transfers money from a customer's savings account into his/her checking account). When accessing data in an SQL database, DataEase usually treats a DQL Procedure as a single transaction by default and commits all the changes made to the data simultaneously at the end of the procedure. When you're running a shared application on a network, treating a whole procedure as a single transaction may reduce concurrency. For this reason, DataEase provides the tran off command (to turn transactions off) and the commit command to divide a procedure into several smaller transactions.
Usage
The commit command is used with the begin transaction command to divide a procedure into several transactions. By defining separate transactions within a DQL Procedure, it's possible to rollback any partially completed changes that leave data in an inconsistent state and to recover from system or user-generated errors.
A commit command can be used anywhere in a procedure. When DataEase converts a script into SQL, the position of a commit command in the script determines how DataEase processes it. If the commit command is outside a for loop or conditional statement, DataEase translates the DQL commit into an SQL COMMIT command (this commits all changes made to the data since the last commit or begin transaction command was processed). If the commit is inside a for loop or conditional statement, DataEase inserts the SQL SAVEPOINT command.
The commit command is often followed by a conditional statement that uses the current status, current SQLCODE, or current SQLCOUNT variable to determine if the preceding transaction was committed successfully (see Example 2).Example 1
for RESERVATIONS ;
begin transaction
modify records
TOTAL DUE := TOTAL DUE - AMOUNT PAID .
commit .
If DEPARTURE DATE < current date - 90 then
begin transaction
modify records
TOTAL DUE := TOTAL DUE * LATE PENALTY .
commit .
end
end
This procedure contains two transactions. The first transaction modifies the RESERVATIONS records by subtracting the AMOUNT PAID from the TOTAL DUE. The second transaction modifies the records of past due accounts (that is, reservations that are not paid 90 days after the RESERVATION DATE) by multiplying the TOTAL DUE by a LATE PENALTY factor. Each transaction is committed as it is completed. The commit commands tell DataEase to post the changes in the appropriate table on the server and then continue processing the procedure.Example 2
for RESERVATIONS ;
begin transaction
modify records in CLUB ROOMS with
( CLUB ID = RESERVATIONS CLUB ID and
RESERVATION DATE = RESERVATIONS RESERVATIONDATE)
VACANCIES := VACANCIES - ROOMSREQUESTED .
commit .
if current SQLCODE not = 0 then
message " Last transaction was unsuccessful.|
Not enough rooms available.|
Changes have been rolled back . " window.
else begin transaction
modify records
CONFIRMED := YES .
commit .
end
end
This procedure uses the current SQLCODE variable to verify that the first transaction was successfully committed before beginning the second transaction. If the current SQLCODE is not equal to zero (i.e., the first transaction was not successfully committed), the SQL engine automatically rolls back the changes and displays a message that notifies the user that the transaction failed. If the current SQLCODE is zero, the first transaction is committed and DataEase continues processing.