Note In FairCom Edge and FairCom MQ, use the "createIntegrationTable" action to create an insert-read-only table that can transform data.
All tables created by the JSON DB API are compatible with all other FairCom APIs, but tables created by other APIs are not automatically compatible with all FairCom APIs.
Request examples
Minimal
{
"action": "createTable",
"params": {
"tableName": "test1",
"fields": [
{
"name": "name",
"type": "varchar",
"length": 50
}
]
},
"authToken": "replaceWithAuthTokenFromCreateSession"
}Maximal
{
"api": "db",
"action": "createTable",
"params": {
"databaseName": "ctreeSQL",
"ownerName": "admin",
"tableName": "all_types",
"changeIdField": "signed_int64",
"primaryKeyFields": [
"lastname",
"firstname"
],
"fields": [
{
"name": "firstname",
"type": "varchar"
},
{
"name": "lastname",
"type": "varchar"
},
{
"name": "nested_json_object_or_array",
"type": "json",
"length": 65500
},
{
"name": "boolean_byte",
"type": "bit"
},
{
"name": "signed_int8",
"type": "tinyint"
},
{
"name": "signed_int16",
"type": "smallint"
},
{
"name": "signed_int32",
"type": "integer",
"autoValue": "incrementOnInsert"
},
{
"name": "signed_int64",
"type": "bigint",
"autoValue": "changeId"
},
{
"name": "iee_base2float32",
"type": "real"
},
{
"name": "iee_base2float64",
"type": "float"
},
{
"name": "signed32digits_base10_left32right0",
"type": "number",
"length": 32,
"scale": 0
},
{
"name": "signed32digits_base10_left0right32",
"type": "number",
"length": 32,
"scale": 32
},
{
"name": "signed32digits_base10_left20right12",
"type": "number",
"length": 32,
"scale": 12
},
{
"name": "signed32digits_base10_left30right2",
"type": "money",
"length": 32,
"scale": 2
},
{
"name": "signed32digits_base10_left28right4",
"type": "money",
"length": 32,
"scale": 4
},
{
"name": "date_yyyymmdd",
"type": "date"
},
{
"name": "time_hhmmssfff",
"type": "time"
},
{
"name": "datetime_yyyymmddthhmmssfff",
"type": "timestamp",
"autoValue": "timestampOnInsert"
},
{
"name": "fixed_string_10bytes",
"type": "char",
"length": 10
},
{
"name": "variable_string_up_to_max65500bytes",
"type": "varchar",
"length": 65500
},
{
"name": "variable_string_up_to_2GB",
"type": "lvarchar"
},
{
"name": "fixed_binary_10bytes",
"type": "binary",
"length": 10
},
{
"name": "variable_binary_up_to_max65500bytes",
"type": "varbinary",
"length": 65500
},
{
"name": "variable_binary_up_to_2GB",
"type": "lvarbinary"
}
],
"transactionModel": "logTransactions",
"growthExtent": 0,
"folder": "./ctreeSQL.dbs",
"smallFile": false,
"createRecByteIndex": false,
"tableFileExtension": ".dat",
"indexFileExtension": ".idx"
},
"responseOptions": {
"dataFormat": "objects"
},
"apiVersion": "1.0",
"requestId": "3",
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Create an athlete table
{
"api": "db",
"action": "createTable",
"apiVersion": "1.0",
"params": {
"databaseName": "ctreeSQL",
"tableName": "athlete",
"fields": [
{
"name": "name",
"type": "varchar",
"length": 30
},
{
"name": "ranking",
"type": "smallint",
"nullable": false
},
{
"name": "birthDate",
"type": "date"
},
{
"name": "playerNumber",
"type": "number",
"length": 32,
"scale": 6
},
{
"name": "livedPast2000",
"type": "bit"
},
{
"name": "earnings",
"type": "money",
"length": 32,
"scale": 4
},
{
"name": "favoriteSaying",
"type": "varchar",
"length": 500
}
]
},
"authToken": "replaceWithAuthTokenFromCreateSession"
}Create testPrimaryKey table with two primary key fields
{
"api": "db",
"action": "createTable",
"params": {
"tableName": "testPrimaryKey",
"primaryKeyFields": [ "lastname", "firstname" ],
"fields": [
{
"name": "firstname",
"type": "varchar",
"length": 50
},
{
"name": "lastname",
"type": "varchar",
"length": 50
},
{
"name": "description",
"type": "varchar",
"length": 100
}
]
},
"authToken": "replaceWithAuthTokenFromCreateSession"
}
Response examples
Success
{
"result": {
"dataFormat": "objects",
"data": [
{
"changeIdField": "changeId",
"createRecByteIndex": false,
"databaseName": "ctreeSQL",
"fieldDelimiterValue": 0,
"fields": [
{
"autoValue": "incrementOnInsert",
"defaultValue": null,
"length": null,
"name": "id",
"nullable": false,
"primaryKey": 1,
"scale": null,
"type": "bigint"
},
{
"autoValue": "changeId",
"defaultValue": null,
"length": null,
"name": "changeId",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "bigint"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 50,
"name": "name",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "varchar"
}
],
"folder": ".\\ctreeSQL.dbs",
"growthExtent": 0,
"indexFileExtension": ".idx",
"indexes": [
{
"collectStats": false,
"compression": "off",
"conditionalExpression": null,
"databaseName": "ctreeSQL",
"deferIndexing": false,
"fields": [
{
"caseInsensitive": false,
"name": "id",
"reverseCompare": false,
"sortDescending": false
}
],
"filename": "admin_test1.idx",
"immutableKeys": false,
"indexName": "id_pk",
"indexNumber": 0,
"ownerName": "admin",
"tableName": "test1",
"unique": true
}
],
"ownerName": "admin",
"padValue": 0,
"path": ".\\ctreeSQL.dbs",
"primaryKeyFields": [
"id"
],
"smallFile": false,
"tableFileExtension": ".dat",
"tableName": "test1",
"totalRecordCount": 0,
"transactionModel": "logTransactions",
"uid": 1177
}
]
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Maximal
{
"result": {
"dataFormat": "objects",
"data": [
{
"changeIdField": "changeId",
"createRecByteIndex": false,
"databaseName": "ctreeSQL",
"fieldDelimiterValue": 0,
"primaryIndexName": "id_pk",
"fields": [
{
"autoValue": "incrementOnInsert",
"defaultValue": null,
"length": null,
"name": "id",
"nullable": false,
"primaryKey": 1,
"scale": null,
"type": "bigint"
},
{
"autoValue": "changeId",
"defaultValue": null,
"length": null,
"name": "changeId",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "bigint"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 50,
"name": "name",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "varchar"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 16,
"name": "status",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "varchar"
}
],
"folder": "./ctreeSQL.dbs",
"growthExtent": 0,
"indexFileExtension": ".idx",
"indexes": [
{
"indexName": "id_pk",
"primaryIndex": "true",
"collectStats": false,
"compression": "off",
"conditionalExpression": null,
"databaseName": "ctreeSQL",
"deferIndexing": false,
"fields": [
{
"caseInsensitive": false,
"name": "id",
"reverseCompare": false,
"sortDescending": false
}
],
"filename": "admin_all_types.idx",
"immutableKeys": false,
"indexName": "id_pk",
"indexNumber": 0,
"ownerName": "admin",
"tableName": "all_types",
"unique": true
}
],
"ownerName": "admin",
"padValue": 0,
"path": "./ctreeSQL.dbs",
"primaryKeyFields": [
"id"
],
"smallFile": false,
"tableFileExtension": ".dat",
"tableName": "all_types",
"totalRecordCount": 0,
"transactionModel": "logTransactions",
"uid": 1193
}
]
},
"requestId": "3",
"debugInfo": {
"request": {
"api": "db",
"action": "createTable",
"params": {
"databaseName": "ctreeSQL",
"ownerName": "admin",
"tableName": "all_types",
"fields": [
{
"name": "name",
"type": "varchar",
"length": 50
}
],
"transactionModel": "logTransactions",
"growthExtent": 0,
"folder": "./ctreeSQL.dbs",
"smallFile": false,
"createRecByteIndex": false,
"tableFileExtension": ".dat",
"indexFileExtension": ".idx"
},
"apiVersion": "1.0",
"requestId": "3",
"responseOptions": {
"dataFormat": "objects"
},
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
},
"serverSuppliedValues": {
"databaseName": "ctreeSQL",
"ownerName": "admin"
},
"errorData": {
"errorData": null
},
"warnings": []
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Create "athlete" table success
{
"result": {
"dataFormat": "objects",
"data": [
{
"changeIdField": "changeId",
"createRecByteIndex": false,
"databaseName": "ctreeSQL",
"fieldDelimiterValue": 0,
"fields": [
{
"autoValue": "incrementOnInsert",
"defaultValue": null,
"length": null,
"name": "id",
"nullable": false,
"primaryKey": 1,
"scale": null,
"type": "bigint"
},
{
"autoValue": "changeId",
"defaultValue": null,
"length": null,
"name": "changeId",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "bigint"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 30,
"name": "name",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "varchar"
},
{
"autoValue": "none",
"defaultValue": null,
"length": null,
"name": "ranking",
"nullable": false,
"primaryKey": 0,
"scale": null,
"type": "smallint"
},
{
"autoValue": "none",
"defaultValue": null,
"length": null,
"name": "birthDate",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "date"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 32,
"name": "playerNumber",
"nullable": true,
"primaryKey": 0,
"scale": 6,
"type": "number"
},
{
"autoValue": "none",
"defaultValue": null,
"length": null,
"name": "livedPast2000",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "bit"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 32,
"name": "earnings",
"nullable": true,
"primaryKey": 0,
"scale": 4,
"type": "money"
},
{
"autoValue": "none",
"defaultValue": null,
"length": 500,
"name": "favoriteSaying",
"nullable": true,
"primaryKey": 0,
"scale": null,
"type": "varchar"
}
],
"folder": ".\\ctreeSQL.dbs",
"growthExtent": 0,
"indexFileExtension": ".idx",
"indexes": [
{
"collectStats": false,
"compression": "off",
"conditionalExpression": null,
"databaseName": "ctreeSQL",
"deferIndexing": false,
"fields": [
{
"caseInsensitive": false,
"name": "id",
"reverseCompare": false,
"sortDescending": false
}
],
"filename": "admin_athlete.idx",
"immutableKeys": false,
"indexName": "id_pk",
"indexNumber": 0,
"ownerName": "admin",
"tableName": "athlete",
"unique": true
}
],
"ownerName": "admin",
"padValue": 0,
"path": ".\\ctreeSQL.dbs",
"primaryKeyFields": [
"id"
],
"smallFile": false,
"tableFileExtension": ".dat",
"tableName": "athlete",
"totalRecordCount": 0,
"transactionModel": "logTransactions",
"uid": 1169
}
]
},
"requestId": "2",
"debugInfo": {
"request": {
"api": "db",
"action": "createTable",
"params": {
"databaseName": "ctreeSQL",
"tableName": "athlete",
"fields": [
{
"name": "name",
"type": "varchar",
"length": 30
},
{
"name": "ranking",
"type": "smallint",
"nullable": false
},
{
"name": "birthDate",
"type": "date"
},
{
"name": "playerNumber",
"type": "number",
"length": 32,
"scale": 6
},
{
"name": "livedPast2000",
"type": "bit"
},
{
"name": "earnings",
"type": "money",
"length": 32,
"scale": 4
},
{
"name": "favoriteSaying",
"type": "varchar",
"length": 500
}
]
},
"apiVersion": "1.0",
"requestId": "2",
"debug": "max",
"authToken": "replaceWithAuthTokenFromCreateSession"
},
"serverSuppliedValues": {
"databaseName": "ctreeSQL",
"ownerName": "admin"
},
"errorData": {
"errorData": null
},
"warnings": []
},
"errorCode": 0,
"errorMessage": "",
"authToken": "replaceWithAuthTokenFromCreateSession"
}Table already exists: failure
{
"errorCode": 4022,
"errorMessage": "Table 'test1' creation failed",
"authToken": "replaceWithAuthTokenFromCreateSession"
}
Other API examples
The following are examples of using other APIs to create tables compatible with FairCom APIs.
Use SQL to create tables compatible with JSON DB
If you use SQL to create a table, you must add a primary key and a "changeId" field to leverage all JSON DB features. JSON DB requires a primary key to update records, and a "changeId" field to do optimistic locking.
- To create a primary key in SQL, create a unique, unfiltered index on one or more fields in a table. The fields in the index are the fields returned by the "primaryKeys" property in JSON DB.
- To create a "changeId" in SQL, see the storage clause of the SQL documentation for CREATE TABLE.
Use CTDB to create tables compatible with JSON DB
When you use the CTDB API to create tables, you must do the following to be compatible with the JSON DB API.
- Add a unique index with no filter conditions and without null key suppression. It is best to call ctdbSetIndexPrimaryFlag() at index creation to explicitly identify which index defines the primary key. If it is not the first index (in index definition order), the following criteria are used to identify which index identifies the primary key:
- The index is unique.
- The index has null key exclusion turned off (IIDX.inulkey == 0).
- The index is not temporary (xflmod == ctTEMPFILE).
- The index has no conditional expression.
- Add a "changeId" field. See ctdbSetChangeIDField() for CTDB or addChangeIDfield for ISAM.
Use bookmarks to identify a record
When a table lacks a primary key, you can use a bookmark to uniquely identify a record for read, update, or delete operations. Still, it is less reliable than a primary key.
The potential issue with bookmarks arises from a specific, uncommon scenario:
A user bookmarks a record.
Later, that user or another user deletes the bookmarked record.
Subsequently, a record is inserted or another record is updated to a size smaller than the deleted record.
In this scenario, the server may reuse the space previously occupied by the deleted record for the newly inserted or updated record. If this happens, the original bookmark now refers to the new record. This is problematic because the server will not return an error when the user attempts to read, update, or delete the bookmarked record; instead, the operation will incorrectly target the newly inserted or updated record.
In contrast, if a record is deleted using its primary key, any subsequent attempt to read, update, or delete a record using that same primary key will reliably result in the server returning an error. For this reason, tables should always include a primary key, and you should use the primary key to identify records for reads, updates, and deletes.
If a table is created without a primary key but with the hidden rowid field and index, the bookmark uses its value instead of the record offset to identify records. A bookmark using the hidden rowid field is as reliable as a primary key. Nonetheless, it is best to create a table with a primary key because it is visible. The JSON DB API follows this best practice.
By default, the SQL engine creates the hidden rowid field and index. Instead, you should create the table with a primary key named "id" and use the following CREATE TABLE SQL clause to eliminate it: STORAGE_ATTRIBUTES 'hotAlter; huge; NOROWID_FLD;'.
JSON DB "createTable" example
{
"api": "db",
"action": "createTable",
"params": {
"tableName": "table_with_id_pk",
"fields": [
{ "name": "my_field", "type": "varchar", "length": 50 }
]
},
"authToken": ""
}SQL CREATE TABLE example
CREATE TABLE table_with_id_pk
(
id BIGINT IDENTITY (1,1)
, changeid BIGINT DEFAULT autochangeid NOT NULL
, my_field VARCHAR(50)
, PRIMARY KEY(id))
STORAGE_ATTRIBUTES 'hotAlter; huge; norowid_fld; noRecbyt_idx;'
;
Request properties ("params")
| Property | Description | Default | Type | Limits (inclusive) |
|---|---|---|---|---|
ownerName |
The You specify this property when you want to use a different account instead of the default. Your session's account must have the appropriate privileges to access the code package. This property is useful because objects, such as tables and code packages, can have the same name in the same database as long as different accounts own each object. This feature allows you to create duplicate objects for different users on the same server and reuse the same JSON actions on those objects. For example, an administrator can copy objects from a production environment to her account so she can troubleshoot an issue using the same JSON actions, JavaScript, and SQL code. It is an error to set If no default owner is specified during |
Optional with default of the session's "defaultOwnerName" property |
string | 1 to 64 bytes |
tableName |
The See table name in System specifications for the table naming requirements and limitations.
"params": {
"tableName": "ctreeTable"
} |
Required - No default value | string | 1 to 64 bytes |
Fields |
The
"fields":
[
{
"name": "name",
"caseInsensitive": true,
"sortDescending": true,
"reverseCompare": false
}
] |
Required - No default value |
array of objects |
|
|
fields .name |
The The The
|
Required - No default value | string | 1 to 64 bytes |
|
fields .type |
The
Request example "fields": [
{
"name": "j",
"type": "number"
}
] |
Required - No default value | string |
|
|
fields .length |
The "length" property specifies the length of a table field. For more details, see “length”.
|
Optional with default of null
|
integer |
1 to 65500
|
|
fields .scale |
The The value of A scale of The You may optionally use the Example numbers allowed in "number" and "money" field types with a length of 4 and a scale from 0 to 4.
Request Example Create a table that contains all field types that use the "fields": [
{
"name": "j",
"type": "number",
"scale": 32
},
{
"name": "k",
"type": "number",
"scale": 4
} |
Optional with default of null
|
integer |
0 to 32
|
|
fields .autoValue |
The "autoValue" property indicates when and how the server automatically sets the field value. For more details, see “autoValue”. |
Optional with default of "none"
|
string |
|
transactionModel |
The Possible values:
Example request {
"api": "db",
"action": "createTable",
"params": {
"transactionModel": "noTransactions"
},
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
Optional with default of "logTransactions"
|
string |
|
growthExtent |
The
{
"api": "db",
"action": "createTable",
"params": {
"growthExtent": 64000000
},
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
Optional with default of 0
|
integer |
0 to 2147483647
|
folder |
The
Request example {
"api": "db",
"action": "createTable",
"params": {
"tableName": "test_1",
"folder": "Test_Folder"
},
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
Optional with default of ""
|
string | 0 to 2,048 bytes |
smallFile |
The
Example request {
"api": "db",
"action": "createTable",
"params": {
"smallFile": true
},
"authToken": "replaceWithAuthTokenFromCreateSession"
} |
Optional with default of false
|
Boolean |
|
createRecByteIndex |
The
"params": {
"createRecByteIndex": true
} |
Optional with default of false
|
Boolean |
|
tableFileExtension |
The
Example request "params": {
"tableName": "test1",
"tableFileExtension": ".dat"
} |
Optional with default of ".dat"
|
string | 0 to 64 bytes |
indexFileExtension |
The
"params": {
"indexFileExtension": ".tidx"
} |
Optional with default of ".idx"
|
string | 0 to 64 bytes |
Response properties ("result")
| Property | Description | Type | Limits (inclusive) |
|---|---|---|---|
dataFormat |
The
|
string |
|
data |
The |
array of objects | The action determines its contents. |
|
data .changeIdField |
The "changeIdField" property specifies the name of the field used for the change-tracking functionality. If the table already has a change-tracking field, this new field is now used instead for change-tracking. |
string | 1 to 64 bytes |
|
data .createRecByteIndex |
The
|
Boolean |
|
|
data .databaseName |
The
|
string | 1 to 64 bytes |
|
data .fieldDelimiterValue |
The
|
integer |
0 to 255
|
|
data .fields |
The
"fields": [
{
"autoValue": "none",
"name": "name",
"type": "varchar",
"length": 50,
"scale": null,
"defaultValue": null,
"nullable": false, |
array |
updateRecords and deleteRecords only:
|
|
data .fields .autoValue |
The "autoValue" property indicates when and how the server automatically sets the field value. See autoValue for more details. |
string |
|
|
data .fields .defaultValue |
The "defaultValue" property specifies the field's default value. |
string | 0 to 65,500 bytes |
|
data .fields .length |
Identifies the length of the field. | integer |
1 to 65500 |
|
data .fields .name |
The The The
|
string | 1 to 64 bytes |
|
data .fields .nullable |
“nullable” identifies whether a field can contain a NULL value. |
Boolean |
|
|
data .fields .primaryKey |
When > 0, the "primaryKey" property identifies the ordinal position of the field within the table's primary key. |
integer |
0 to 32
|
|
data .indexes .fields .caseInsensitive |
The When "fields": [
{
"caseInsensitive": true
}
] |
Boolean |
|
|
data .indexes .fields .reverseCompare |
The When "fields": [
{
"reverseCompare": true
}
] |
Boolean |
|
|
data .indexes .fields .sortDescending |
The "fields": [
{
"sortDescending": true
}
] |
Optional with default of false
|
Boolean |
|
data .fields .scale |
If the type is "number" or "money", the "scale" property identifies the number of places to the right of the decimal point,. |
integer |
0 to 32
|
|
data .fields .type |
Identifies the type of the field. See Data types. | string |
|
|
data .folder |
The
|
string | 0 to 2,048 bytes |
|
data .growthExtent |
The
|
integer |
0 to 2147483647
|
|
data .indexFileExtension |
The
|
string | 0 to 64 bytes |
|
data .indexes .collectstats |
The “collectStats” property identifies whether usage statistics are being collected and stored. |
boolean |
|
|
data .indexes .compression |
The “compression” property identifies whether the index is compressed. |
string |
|
|
data .indexes .conditionalExpression |
The “conditionalExpression” property identifies an optional conditional expression that filters which records are included in the index. It is null when there is no conditional expression. |
string |
null or a string containing a conditional expression. |
|
data .indexes .databaseName |
The You specify this property when you want to use a different database instead of the default. This property is useful because objects, such as tables and code packages, can have the same name in multiple databases. This feature allows you to create multiple environments in the same server and reuse the same JSON actions in each environment. For example, you can create It is an error to set If no default database is specified during |
string | 1 to 64 bytes |
|
data .indexes .deferIndexing |
“deferindexing” identifies whether deferred indexing is enabled. A deferred index builds and updates asynchronously. This speeds up inserts, updates, and deletes, with a slight delay due to the changes being included in the index. |
boolean |
|
|
data .indexes .filename |
The
|
string | 0 to 2048 bytes |
|
data .indexes .immutableKeys |
"immutableKeys" indicates whether a key's value can be changed. |
boolean |
|
|
data .indexes .indexName |
The "indexName" property specifies the name of an index. A zero-length "indexName" is invalid. |
string | 1 to 64 bytes |
|
data .indexes .ownerName |
The You specify this property when you want to use a different account instead of the default. Your session's account must have the appropriate privileges to access the code package. This property is useful because objects, such as tables and code packages, can have the same name in the same database as long as different accounts own each object. This feature allows you to create duplicate objects for different users on the same server and reuse the same JSON actions on those objects. For example, an administrator can copy objects from a production environment to her account so she can troubleshoot an issue using the same JSON actions, JavaScript, and SQL code. It is an error to set If no default owner is specified during |
string | 1 to 64 bytes |
|
data .indexes .tableName |
The See table name in System specifications for the table naming requirements and limitations. |
string | 1 to 64 bytes |
|
data .indexes .unique |
The "unique" property causes the "createIndex" action to create a unique index, which requires the columns in the index to have a unique value for each record in the table, when set to true. |
Boolean |
|
|
data .ownerName |
The "ownerName" property identifies the user who owns an object (see Object owner). |
string | 0 to 64 bytes |
|
data .padValue |
The All fixed-length fields in a table are padded with the same pad value. For more details, see |
integer |
0 to 255
|
|
data .path |
The "path" property identifies the path of the database folder. For more details, see "path". |
string | 0 to 2,048 bytes |
|
data .primaryKeyFields |
This property specifies the fields of the table’s primary key when multiple fields are combined to form the primary key.
The order of fields in this property is the order of fields in the primary key index. The A primary key with multiple fields has an index named If only one field is used as the primary key, the
Example "primaryKeyFields": [
"a",
"b",
"c"
],
"fields": [
{
"name": "a",
"type": "tinyint"
},
{
"name": "b",
"type": "smallint"
},
{
"name": "c",
"type": "integer"
}
] |
array | an array |
|
data .smallFile |
The
|
Boolean |
|
|
data .tableFileExtension |
The
|
string | 0 to 64 bytes |
|
data .tableName |
The See table name in System specifications for the table naming requirements and limitations. |
string | 1 to 64 bytes |
|
data .totalRecordCount |
The
|
integer |
|
|
data .transactionModel |
The Possible values:
|
string |
|