Add sqlite driver, with dblite adapter
This commit is contained in:
parent
fb6bf25062
commit
a14119d0b9
29
lib/adapters/dblite.js
Normal file
29
lib/adapters/dblite.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var adapter = require('../adapter'),
|
||||||
|
getArgs = require('getargs');
|
||||||
|
|
||||||
|
/** @module adapters/dblite */
|
||||||
|
var Dblite = function(instance) {
|
||||||
|
|
||||||
|
// That 'new' keyword is annoying
|
||||||
|
if ( ! (this instanceof Dblite)) return new Dblite(instance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the sql query as a prepared statement
|
||||||
|
*
|
||||||
|
* @param {String} sql - The sql with placeholders
|
||||||
|
* @param {Array} params - The values to insert into the query
|
||||||
|
* @param {Function} callback - Callback to run when a response is recieved
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
adapter.execute = function(/*sql, params, callback*/) {
|
||||||
|
var args = getArgs('sql:string, [params]:array, callback:function', arguments);
|
||||||
|
|
||||||
|
instance.query(args.sql, args.params, args.callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
return adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Dblite;
|
16
lib/drivers/sqlite.js
Normal file
16
lib/drivers/sqlite.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Driver for PostgreSQL databases
|
||||||
|
*
|
||||||
|
* @module drivers/pg
|
||||||
|
*/
|
||||||
|
module.exports = (function() {
|
||||||
|
delete require.cache[require.resolve('../driver')];
|
||||||
|
var driver = require('../driver');
|
||||||
|
|
||||||
|
// Sqlite doesn't have a truncate command
|
||||||
|
driver.hasTruncate = false;
|
||||||
|
|
||||||
|
return driver;
|
||||||
|
}());
|
@ -159,7 +159,7 @@ var QueryBuilder = function(driver, adapter) {
|
|||||||
{
|
{
|
||||||
obj[args.$key] = args.$val;
|
obj[args.$key] = args.$val;
|
||||||
}
|
}
|
||||||
else if ( ! helpers.isScalar(args.$key))
|
else
|
||||||
{
|
{
|
||||||
obj = args.$key;
|
obj = args.$key;
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,7 @@ var filterMatches = function(array) {
|
|||||||
if (helpers.isScalar(array) || helpers.isNull(array) || helpers.isUndefined(array)) return output;
|
if (helpers.isScalar(array) || helpers.isNull(array) || helpers.isUndefined(array)) return output;
|
||||||
|
|
||||||
array.forEach(function(item) {
|
array.forEach(function(item) {
|
||||||
if ( ! helpers.isUndefined(item))
|
output.push(item);
|
||||||
{
|
|
||||||
output.push(item);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
|
21
package.json
21
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ci-node-query",
|
"name": "ci-node-query",
|
||||||
"version": "0.1.1",
|
"version": "0.2.0",
|
||||||
"description": "A query builder for node based on the one in CodeIgniter",
|
"description": "A query builder for node based on the one in CodeIgniter",
|
||||||
"author": "Timothy J Warren <tim@timshomepage.net>",
|
"author": "Timothy J Warren <tim@timshomepage.net>",
|
||||||
"engines": {
|
"engines": {
|
||||||
@ -10,27 +10,40 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/timw4mail/node-query.git"
|
"url": "https://github.com/timw4mail/node-query.git"
|
||||||
},
|
},
|
||||||
|
"keywords": [
|
||||||
|
"codeigniter",
|
||||||
|
"mysql2",
|
||||||
|
"mysql",
|
||||||
|
"query builder",
|
||||||
|
"pg",
|
||||||
|
"postgres",
|
||||||
|
"sqlite",
|
||||||
|
"dblite"
|
||||||
|
],
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/timw4mail/node-query/issues"
|
"url": "https://github.com/timw4mail/node-query/issues"
|
||||||
},
|
},
|
||||||
"main": "lib/node-query.js",
|
"main": "lib/node-query.js",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"getargs": "",
|
"getargs": "",
|
||||||
"es6-shim":""
|
"es6-shim": ""
|
||||||
},
|
},
|
||||||
"bundledDependencies": [
|
"bundledDependencies": [
|
||||||
"es6-shim","getargs"
|
"es6-shim",
|
||||||
|
"getargs"
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"dblite": "^0.6.1",
|
||||||
"grunt": "^0.4.5",
|
"grunt": "^0.4.5",
|
||||||
|
"grunt-cli": "",
|
||||||
"grunt-contrib-clean": "^0.6.0",
|
"grunt-contrib-clean": "^0.6.0",
|
||||||
"grunt-contrib-nodeunit": "^0.4.1",
|
"grunt-contrib-nodeunit": "^0.4.1",
|
||||||
"grunt-istanbul": "^0.3.0",
|
"grunt-istanbul": "^0.3.0",
|
||||||
"grunt-jsdoc": ">=0.6.1",
|
"grunt-jsdoc": ">=0.6.1",
|
||||||
"grunt-cli":"",
|
|
||||||
"jsdoc": "^3.3.0-alpha9",
|
"jsdoc": "^3.3.0-alpha9",
|
||||||
"mysql": "^2.5.2",
|
"mysql": "^2.5.2",
|
||||||
"mysql2": "^0.12.5",
|
"mysql2": "^0.12.5",
|
||||||
|
"node-firebird": "^0.2.3",
|
||||||
"nodeunit": "^0.9.0",
|
"nodeunit": "^0.9.0",
|
||||||
"pg": "^3.6.2"
|
"pg": "^3.6.2"
|
||||||
},
|
},
|
||||||
|
50
tests/adapters/dblite_test.js
Normal file
50
tests/adapters/dblite_test.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
// Load the test base
|
||||||
|
delete require.cache[require.resolve('../query-builder-base')];
|
||||||
|
var testBase = require('../query-builder-base');
|
||||||
|
var tests = testBase.tests;
|
||||||
|
|
||||||
|
// Load the test config file
|
||||||
|
var adapterName = 'dblite';
|
||||||
|
|
||||||
|
// Set up the connection
|
||||||
|
var sqlite = require(adapterName).withSQLite('3.8.6+');
|
||||||
|
var connection = sqlite(':memory:');
|
||||||
|
|
||||||
|
// Set up the query builder object
|
||||||
|
var nodeQuery = require('../../lib/node-query');
|
||||||
|
var qb = nodeQuery('sqlite', connection, adapterName);
|
||||||
|
|
||||||
|
// Set up the sqlite database
|
||||||
|
var sql = 'CREATE TABLE IF NOT EXISTS "create_test" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);' +
|
||||||
|
'CREATE TABLE IF NOT EXISTS "create_join" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);';
|
||||||
|
connection.query(sql);
|
||||||
|
|
||||||
|
// Set up the test base
|
||||||
|
testBase._setUp(qb, function(test, err, rows) {
|
||||||
|
if (err != null) {
|
||||||
|
test.done();
|
||||||
|
throw new Error(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert/Update/Delete queries return undefined
|
||||||
|
if (rows === undefined) {
|
||||||
|
rows = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
test.ok(rows, 'dblite: Valid result for generated query');
|
||||||
|
test.done();
|
||||||
|
});
|
||||||
|
|
||||||
|
tests["dblite adapter with query builder"] = function(test) {
|
||||||
|
test.expect(1);
|
||||||
|
test.ok(testBase.qb);
|
||||||
|
|
||||||
|
// Close the db connection
|
||||||
|
connection.close();
|
||||||
|
test.done();
|
||||||
|
};
|
||||||
|
|
||||||
|
// Export the final test object
|
||||||
|
module.exports = tests;
|
@ -7,7 +7,11 @@ var modules = {
|
|||||||
'node-query': require('../lib/node-query'),
|
'node-query': require('../lib/node-query'),
|
||||||
'drivers/pg': require('../lib/drivers/pg'),
|
'drivers/pg': require('../lib/drivers/pg'),
|
||||||
'drivers/mysql': require('../lib/drivers/mysql'),
|
'drivers/mysql': require('../lib/drivers/mysql'),
|
||||||
adapter: require('../lib/adapter')
|
'drivers/sqlite': require('../lib/drivers/sqlite'),
|
||||||
|
'adapters/mysql': require('../lib/adapters/mysql'),
|
||||||
|
'adapters/mysql2': require('../lib/adapters/mysql2'),
|
||||||
|
'adapters/pg': require('../lib/adapters/pg'),
|
||||||
|
'adapters/dblite': require('../lib/adapters/dblite')
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
@ -20,5 +20,9 @@
|
|||||||
"pg": {
|
"pg": {
|
||||||
"driver": "pg",
|
"driver": "pg",
|
||||||
"conn": "postgres://postgres@localhost/test"
|
"conn": "postgres://postgres@localhost/test"
|
||||||
|
},
|
||||||
|
"dblite": {
|
||||||
|
"driver": "sqlite",
|
||||||
|
"conn": ":memory:"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -20,5 +20,9 @@
|
|||||||
"pg": {
|
"pg": {
|
||||||
"driver": "pg",
|
"driver": "pg",
|
||||||
"conn": "postgres://test:test@localhost/test"
|
"conn": "postgres://test:test@localhost/test"
|
||||||
|
},
|
||||||
|
"dblite": {
|
||||||
|
"driver": "sqlite",
|
||||||
|
"conn": ":memory:"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -26,91 +26,3 @@ CREATE TABLE `create_test` (
|
|||||||
);
|
);
|
||||||
ALTER TABLE `create_test`
|
ALTER TABLE `create_test`
|
||||||
ADD PRIMARY KEY (`id`);
|
ADD PRIMARY KEY (`id`);
|
||||||
|
|
||||||
-- TABLE TEST
|
|
||||||
DROP TABLE IF EXISTS TEST1;
|
|
||||||
CREATE TABLE TEST1 (
|
|
||||||
TEST_NAME CHAR(30) NOT NULL,
|
|
||||||
TEST_ID INTEGER DEFAULT '0' NOT NULL,
|
|
||||||
TEST_DATE TIMESTAMP NOT NULL
|
|
||||||
);
|
|
||||||
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);
|
|
||||||
|
|
||||||
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
|
|
||||||
DROP TABLE IF EXISTS TEST2;
|
|
||||||
CREATE TABLE TEST2 (
|
|
||||||
ID INTEGER NOT NULL,
|
|
||||||
FIELD1 INTEGER,
|
|
||||||
FIELD2 CHAR(15),
|
|
||||||
FIELD3 VARCHAR(50),
|
|
||||||
FIELD4 INTEGER,
|
|
||||||
FIELD5 INTEGER,
|
|
||||||
ID2 INTEGER NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2);
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1);
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4);
|
|
||||||
CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);
|
|
||||||
|
|
||||||
-- TABLE NUMBERS
|
|
||||||
DROP TABLE IF EXISTS NUMBERS;
|
|
||||||
CREATE TABLE NUMBERS (
|
|
||||||
NUMBER INTEGER DEFAULT '0' NOT NULL,
|
|
||||||
EN CHAR(100) NOT NULL,
|
|
||||||
FR CHAR(100) NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- TABLE NEWTABLE
|
|
||||||
DROP TABLE IF EXISTS NEWTABLE;
|
|
||||||
CREATE TABLE NEWTABLE (
|
|
||||||
ID INT DEFAULT 0 NOT NULL,
|
|
||||||
SOMENAME VARCHAR (12),
|
|
||||||
SOMEDATE TIMESTAMP NOT NULL
|
|
||||||
);
|
|
||||||
ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);
|
|
||||||
|
|
||||||
-- DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE;
|
|
||||||
-- CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1;
|
|
||||||
|
|
||||||
-- VIEW on TEST
|
|
||||||
CREATE OR REPLACE VIEW `testview`(
|
|
||||||
TEST_NAME,
|
|
||||||
TEST_ID,
|
|
||||||
TEST_DATE
|
|
||||||
) AS
|
|
||||||
SELECT *
|
|
||||||
FROM TEST1
|
|
||||||
WHERE TEST_NAME LIKE 't%';
|
|
||||||
|
|
||||||
-- VIEW on NUMBERS
|
|
||||||
CREATE OR REPLACE VIEW `numbersview`(
|
|
||||||
NUMBER,
|
|
||||||
TRANS_EN,
|
|
||||||
TRANS_FR
|
|
||||||
) AS
|
|
||||||
SELECT *
|
|
||||||
FROM NUMBERS
|
|
||||||
WHERE NUMBER > 100;
|
|
||||||
|
|
||||||
-- TABLEs for testing CONSTRAINTs
|
|
||||||
DROP TABLE IF EXISTS testconstraints;
|
|
||||||
CREATE TABLE testconstraints (
|
|
||||||
someid integer NOT NULL,
|
|
||||||
somename varchar(10) NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
|
|
||||||
);
|
|
||||||
DROP TABLE IF EXISTS testconstraints2;
|
|
||||||
CREATE TABLE testconstraints2 (
|
|
||||||
ext_id integer NOT NULL,
|
|
||||||
modified date,
|
|
||||||
uniquefield varchar(10) NOT NULL,
|
|
||||||
usraction integer NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
|
|
||||||
REFERENCES testconstraints (someid)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
|
|
||||||
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
@ -12,107 +12,3 @@ CREATE TABLE create_test (
|
|||||||
key text,
|
key text,
|
||||||
val text
|
val text
|
||||||
);
|
);
|
||||||
|
|
||||||
-- TABLE TEST
|
|
||||||
CREATE TABLE IF NOT EXISTS TEST1 (
|
|
||||||
TEST_NAME CHAR(30) NOT NULL,
|
|
||||||
TEST_ID INTEGER DEFAULT '0' NOT NULL,
|
|
||||||
TEST_DATE TIMESTAMP NOT NULL
|
|
||||||
);
|
|
||||||
ALTER TABLE TEST1 DROP CONSTRAINT IF EXISTS PK_TEST CASCADE;
|
|
||||||
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);
|
|
||||||
|
|
||||||
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
|
|
||||||
CREATE TABLE IF NOT EXISTS TEST2 (
|
|
||||||
ID INTEGER NOT NULL,
|
|
||||||
FIELD1 INTEGER,
|
|
||||||
FIELD2 CHAR(15),
|
|
||||||
FIELD3 VARCHAR(50),
|
|
||||||
FIELD4 INTEGER,
|
|
||||||
FIELD5 INTEGER,
|
|
||||||
ID2 INTEGER NOT NULL
|
|
||||||
);
|
|
||||||
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS PK_TEST2 CASCADE;
|
|
||||||
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD1ID_IDX CASCADE;
|
|
||||||
ALTER TABLE TEST2 DROP CONSTRAINT IF EXISTS TEST2_FIELD4_IDX CASCADE;
|
|
||||||
DROP INDEX IF EXISTS TEST2_FIELD5_IDX;
|
|
||||||
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT PK_TEST2 PRIMARY KEY (ID2);
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1);
|
|
||||||
ALTER TABLE TEST2 ADD CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4);
|
|
||||||
CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);
|
|
||||||
|
|
||||||
-- TABLE NUMBERS
|
|
||||||
CREATE TABLE IF NOT EXISTS NUMBERS (
|
|
||||||
NUMBER INTEGER DEFAULT '0' NOT NULL,
|
|
||||||
EN CHAR(100) NOT NULL,
|
|
||||||
FR CHAR(100) NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- TABLE NEWTABLE
|
|
||||||
CREATE TABLE IF NOT EXISTS NEWTABLE (
|
|
||||||
ID INT DEFAULT 0 NOT NULL,
|
|
||||||
SOMENAME VARCHAR (12),
|
|
||||||
SOMEDATE TIMESTAMP NOT NULL
|
|
||||||
);
|
|
||||||
ALTER TABLE NEWTABLE DROP CONSTRAINT IF EXISTS PKINDEX_IDX CASCADE;
|
|
||||||
ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);
|
|
||||||
|
|
||||||
DROP SEQUENCE IF EXISTS NEWTABLE_SEQ CASCADE;
|
|
||||||
CREATE SEQUENCE NEWTABLE_SEQ INCREMENT 1 START 1;
|
|
||||||
|
|
||||||
-- VIEW on TEST
|
|
||||||
CREATE OR REPLACE VIEW "testview"(
|
|
||||||
TEST_NAME,
|
|
||||||
TEST_ID,
|
|
||||||
TEST_DATE
|
|
||||||
) AS
|
|
||||||
SELECT *
|
|
||||||
FROM TEST1
|
|
||||||
WHERE TEST_NAME LIKE 't%';
|
|
||||||
|
|
||||||
-- VIEW on NUMBERS
|
|
||||||
CREATE OR REPLACE VIEW "numbersview"(
|
|
||||||
NUMBER,
|
|
||||||
TRANS_EN,
|
|
||||||
TRANS_FR
|
|
||||||
) AS
|
|
||||||
SELECT *
|
|
||||||
FROM NUMBERS
|
|
||||||
WHERE NUMBER > 100;
|
|
||||||
|
|
||||||
-- TRIGGER on NEWTABLE
|
|
||||||
DROP FUNCTION IF EXISTS add_stamp() CASCADE;
|
|
||||||
CREATE OR REPLACE FUNCTION add_stamp() RETURNS OPAQUE AS '
|
|
||||||
BEGIN
|
|
||||||
IF (NEW.somedate IS NULL OR NEW.somedate = 0) THEN
|
|
||||||
NEW.somedate := CURRENT_TIMESTAMP;
|
|
||||||
RETURN NEW;
|
|
||||||
END IF;
|
|
||||||
END;
|
|
||||||
' LANGUAGE 'plpgsql';
|
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS ADDCURRENTDATE ON newtable;
|
|
||||||
|
|
||||||
CREATE TRIGGER ADDCURRENTDATE
|
|
||||||
BEFORE INSERT OR UPDATE
|
|
||||||
ON newtable FOR EACH ROW
|
|
||||||
EXECUTE PROCEDURE add_stamp();
|
|
||||||
|
|
||||||
-- TABLEs for testing CONSTRAINTs
|
|
||||||
CREATE TABLE IF NOT EXISTS testconstraints (
|
|
||||||
someid integer NOT NULL,
|
|
||||||
somename character varying(10) NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
|
|
||||||
);
|
|
||||||
CREATE TABLE IF NOT EXISTS testconstraints2 (
|
|
||||||
ext_id integer NOT NULL,
|
|
||||||
modified date,
|
|
||||||
uniquefield character varying(10) NOT NULL,
|
|
||||||
usraction integer NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
|
|
||||||
REFERENCES testconstraints (someid) MATCH SIMPLE
|
|
||||||
ON UPDATE CASCADE ON DELETE CASCADE,
|
|
||||||
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
|
|
||||||
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
|
|
||||||
);
|
|
||||||
|
@ -1,82 +1,3 @@
|
|||||||
-- sample data to test SQLite
|
-- sample data to test SQLite
|
||||||
CREATE TABLE IF NOT EXISTS "create_test" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
|
CREATE TABLE IF NOT EXISTS "create_test" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
|
||||||
CREATE TABLE IF NOT EXISTS "create_join" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
|
CREATE TABLE IF NOT EXISTS "create_join" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
|
||||||
CREATE TABLE IF NOT EXISTS "create_delete" ("id" INTEGER PRIMARY KEY, "key" TEXT, "val" TEXT);
|
|
||||||
|
|
||||||
-- TABLE TEST
|
|
||||||
DROP TABLE IF EXISTS TEST1;
|
|
||||||
CREATE TABLE TEST1 (
|
|
||||||
TEST_NAME TEXT NOT NULL,
|
|
||||||
TEST_ID INTEGER DEFAULT '0' NOT NULL,
|
|
||||||
TEST_DATE TEXT NOT NULL,
|
|
||||||
CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
|
|
||||||
DROP TABLE IF EXISTS TEST2;
|
|
||||||
CREATE TABLE TEST2 (
|
|
||||||
ID INTEGER NOT NULL,
|
|
||||||
FIELD1 INTEGER,
|
|
||||||
FIELD2 TEXT,
|
|
||||||
FIELD3 TEXT,
|
|
||||||
FIELD4 INTEGER,
|
|
||||||
FIELD5 INTEGER,
|
|
||||||
ID2 INTEGER NOT NULL,
|
|
||||||
CONSTRAINT PK_TEST2 PRIMARY KEY (ID2),
|
|
||||||
CONSTRAINT TEST2_FIELD1ID_IDX UNIQUE (ID, FIELD1),
|
|
||||||
CONSTRAINT TEST2_FIELD4_IDX UNIQUE (FIELD4)
|
|
||||||
);
|
|
||||||
CREATE INDEX TEST2_FIELD5_IDX ON TEST2 (FIELD5);
|
|
||||||
|
|
||||||
-- TABLE NUMBERS
|
|
||||||
DROP TABLE IF EXISTS NUMBERS;
|
|
||||||
CREATE TABLE NUMBERS (
|
|
||||||
NUMBER INTEGER DEFAULT 0 NOT NULL,
|
|
||||||
EN TEXT NOT NULL,
|
|
||||||
FR TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- TABLE NEWTABLE
|
|
||||||
DROP TABLE IF EXISTS NEWTABLE;
|
|
||||||
CREATE TABLE NEWTABLE (
|
|
||||||
ID INTEGER DEFAULT 0 NOT NULL,
|
|
||||||
SOMENAME TEXT,
|
|
||||||
SOMEDATE TEXT NOT NULL,
|
|
||||||
CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID)
|
|
||||||
);
|
|
||||||
|
|
||||||
-- VIEW on TEST
|
|
||||||
DROP VIEW IF EXISTS "testview";
|
|
||||||
CREATE VIEW "testview" AS
|
|
||||||
SELECT *
|
|
||||||
FROM TEST1
|
|
||||||
WHERE TEST_NAME LIKE 't%';
|
|
||||||
|
|
||||||
-- VIEW on NUMBERS
|
|
||||||
DROP VIEW IF EXISTS "numbersview";
|
|
||||||
CREATE VIEW "numbersview" AS
|
|
||||||
SELECT *
|
|
||||||
FROM NUMBERS
|
|
||||||
WHERE NUMBER > 100;
|
|
||||||
|
|
||||||
-- TABLEs for testing CONSTRAINTs
|
|
||||||
DROP TABLE IF EXISTS "testconstraints";
|
|
||||||
CREATE TABLE "testconstraints" (
|
|
||||||
someid integer NOT NULL,
|
|
||||||
somename TEXT NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_pk PRIMARY KEY (someid)
|
|
||||||
);
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS "testconstraints2";
|
|
||||||
CREATE TABLE "testconstraints2" (
|
|
||||||
ext_id integer NOT NULL,
|
|
||||||
modified text,
|
|
||||||
uniquefield text NOT NULL,
|
|
||||||
usraction integer NOT NULL,
|
|
||||||
CONSTRAINT testconstraints_id_fk FOREIGN KEY (ext_id)
|
|
||||||
REFERENCES testconstraints (someid)
|
|
||||||
ON UPDATE CASCADE
|
|
||||||
ON DELETE CASCADE,
|
|
||||||
CONSTRAINT unique_2_fields_idx UNIQUE (modified, usraction),
|
|
||||||
CONSTRAINT uniquefld_idx UNIQUE (uniquefield)
|
|
||||||
);
|
|
Loading…
Reference in New Issue
Block a user