Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
Perform a schema upgrade.
The SQL file you use must contain the entire new schema.
UltraLite database schema upgrades can be deployed using one of the following techniques:
For example, execute the following statement to create a new publication:
dbconnection->ExecuteStatement("CREATE PUBLICATION p (table t)");
This statement can be used to perform schema upgrades when you do not know the DDL statement requirements, or do not want to specify the individual DDL statements.
Do not reset a device during a schema upgrade. If you reset the device during a schema upgrade, data will be lost and the UltraLite database marked as "bad."
UltraLite executes the following steps when you upgrade an UltraLite database schema with the ALTER DATABASE SCHEMA FROM FILE statement:
Both the new and existing database schemas are compared to see what differs.
The schema of the existing database is altered.
Rows that do not fit the new schema are dropped. For example:
If you add a uniqueness constraint to a table and there are multiple rows with the same values, all but one row will be dropped.
If you try to change a column domain and a conversion error occurs, then that row is dropped. For example, if you have a VARCHAR column and convert it to an INT column and a row has the value ABCD, then that row is dropped.
If your new schema has new foreign keys where the foreign row does not have a matching primary row, these rows are dropped.
When rows are dropped, a SQLE_ROW_DROPPED_DURING_SCHEMA_UPGRADE (130) warning is raised.
You can keep a master schema on your computer and update the schema as your application changes.
Use either the ulinit or ulunload utilities to extract the DDL statements required for your script. By using these utilities with the following options, you ensure that the DDL statements are syntactically correct:
For an UltraLite database, use the ulunload utility with the -n and -s [ schema-file ] options. For example:
ulunload -c dbf=mydatabase.udb -n -s MySchema.sql
For a SQL Anywhere database, use the ulinit utility with the -a, -l [ schema-file ], and -n [ publication-name ] option. For example:
ulinit -a "dsn=mysqlanywheredatabase" -l MySchema.sql -n MyPub Temp.udb
If you do not use the ulunload or ulinit utilities, review the script and ensure the following:
The script declares the entire desired schema with CREATE statements.
Tables, columns, and publications are not renamed. The RENAME operation is not supported. Renamed tables are processed as a DROP TABLE and CREATE TABLE operation.
There are no non-DDL statements, including non-DDL statements that may not have the effect you expect.
Words in the SQL statement are separated by spaces.
Only one SQL statement appears in each line.
Comments are prepended with double hyphens (-), and only occur at the start of a line.
Each statement is separated by a line containing exactly the word GO.
ALTER DATABASE SCHEMA FROM FILE 'MySchema.sql'
The schema is updated.