See Also
You are here: SQL Reference > Transaction Statements > GO
ContentsIndexHome
PreviousUpNext
GO
GO

 

Syntax

GO

 

Description 

This statement will force all queries in the current transaction to be processed by the query optimizer. This is necessary to seperate DDL and DML queries. Without specifying GO, between DDL queries that define structures that subsequent DML queries rely on, the query optimizer will try and combine the queries into a single internal DQL transaction, but fail because not all databases, tables and column names have been defined yet. 

GO does not affect the atomicity of any current transactions. That is, doing START TRANSACTION, CREATE TABLE, GO, INSERT, then ROLLBACK will still roll back creation of a table. 

 

Examples 

Simple GO example  

CREATE DATABASE IF NOT EXISTS example;
DROP TABLE IF EXISTS example.table_go_test;
CREATE TABLE example.table_go_test
  (id INT NOT NULL PARTITION PRIMARY KEY);
GO;
INSERT INTO example.table_go_test VALUES (1);
INSERT INTO example.table_go_test VALUES (2);
SELECT * FROM example.table_go_test;

Multi-table GO example

CREATE DATABASE IF NOT EXISTS example;
DROP TABLE IF EXISTS example.go1;
CREATE TABLE example.go1 (
    go1_id INT NOT NULL PARTITION,
    title VARCHAR(0),
    CONSTRAINT pkey PRIMARY KEY (id));
DROP TABLE IF EXISTS example.go2;
CREATE TABLE example.go2 (
    go2_id INT NOT NULL PARTITION,
    go1_id INT,
    CONSTRAINT pkey PRIMARY KEY (go2_id),
    CONSTRAINT go1_fkey FOREIGN KEY (link) REFERENCES example.go1 (go1_id));
GO;
INSERT INTO example.go1 VALUES (1,'First');
INSERT INTO example.go2 VALUES (1,1);
INSERT INTO example.go2 VALUES (2,1);
INSERT INTO example.go1 VALUES (2,'Second');
INSERT INTO example.go2 VALUES (3,2);
INSERT INTO example.go2 VALUES (4,2);
SELECT go1.go1_id, go1.title, go2.go2_id
    FROM example.go1 JOIN example.go2 ON go1.go1_id=go2.go1_id;

CREATE TABLE followed by ALTER TABLE:

CREATE TABLE test_table1 (
    col1 BIGINT NOT NULL PARTITION,
    CONSTRAINT pkey PRIMARY KEY (id));
GO;
ALTER TABLE test_table1 (ADD col2 BIGINT);

 

 

Related