diff --git a/postgresql/collection.go b/postgresql/collection.go
index 33fc113edcb99ef599fc67a1ffa745c92f5465d2..445bf6730bb8fefb54fd6b039023001acf0c0a14 100644
--- a/postgresql/collection.go
+++ b/postgresql/collection.go
@@ -251,7 +251,7 @@ func (self *Table) Append(item interface{}) (interface{}, error) {
 		return nil, err
 	}
 
-	var id uint64
+	var id int64
 
 	if err = row.Scan(&id); err != nil {
 		if err == sql.ErrNoRows {
diff --git a/postgresql/database.go b/postgresql/database.go
index fc048e18655c2d77343bc500fda54f5600a1fa0a..c1a616d553e3ada55e0aaf40166a99da1e439b41 100644
--- a/postgresql/database.go
+++ b/postgresql/database.go
@@ -34,7 +34,7 @@ import (
 	"upper.io/db/util/sqlutil"
 )
 
-const Driver = `postgresql`
+const Adapter = `postgresql`
 
 var (
 	// Format for saving dates.
@@ -102,7 +102,7 @@ func init() {
 		pgsqlSelectCountLayout,
 	}
 
-	db.Register(Driver, &Source{})
+	db.Register(Adapter, &Source{})
 }
 
 func (self *Source) doExec(stmt sqlgen.Statement, args ...interface{}) (sql.Result, error) {
diff --git a/postgresql/database_test.go b/postgresql/database_test.go
index 69b606279e62fbc114aee03f9a08c5e9d2a0a1b3..de21b197ef9ebeeacb07b9a0ebbddb21f84645f7 100644
--- a/postgresql/database_test.go
+++ b/postgresql/database_test.go
@@ -105,7 +105,7 @@ func TestOpenFailed(t *testing.T) {
 	var err error
 
 	// Attempt to open an empty database.
-	if _, err = db.Open(Driver, db.Settings{}); err == nil {
+	if _, err = db.Open(Adapter, db.Settings{}); err == nil {
 		// Must fail.
 		t.Fatalf("Expecting an error.")
 	}
@@ -119,7 +119,7 @@ func TestTruncate(t *testing.T) {
 	var col db.Collection
 
 	// Opening database.
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -161,7 +161,7 @@ func TestAppend(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -233,7 +233,7 @@ func TestResultCount(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -264,7 +264,7 @@ func TestResultFetch(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -427,7 +427,7 @@ func TestUpdate(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -516,7 +516,7 @@ func TestFunction(t *testing.T) {
 	var artist db.Collection
 	var total uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -569,7 +569,7 @@ func TestRemove(t *testing.T) {
 	var sess db.Database
 	var artist db.Collection
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -598,25 +598,25 @@ func TestRawRelations(t *testing.T) {
 	var review db.Collection
 
 	type artist_t struct {
-		Id   uint64 `db:"id,omitempty"`
+		Id   int64  `db:"id,omitempty"`
 		Name string `db:"name"`
 	}
 
 	type publication_t struct {
-		Id       uint64 `db:"id,omitempty"`
+		Id       int64  `db:"id,omitempty"`
 		Title    string `db:"title"`
-		AuthorId uint64 `db:"author_id"`
+		AuthorId int64  `db:"author_id"`
 	}
 
 	type review_t struct {
-		Id            uint64    `db:"id,omitempty"`
-		PublicationId uint64    `db:"publication_id"`
+		Id            int64     `db:"id,omitempty"`
+		PublicationId int64     `db:"publication_id"`
 		Name          string    `db:"name"`
 		Comments      string    `db:"comments"`
 		Created       time.Time `db:"created"`
 	}
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -655,7 +655,7 @@ func TestRawRelations(t *testing.T) {
 	if miyazakiId, err = artist.Append(miyazaki); err != nil {
 		t.Fatalf(err.Error())
 	}
-	miyazaki.Id = miyazakiId.(uint64)
+	miyazaki.Id = miyazakiId.(int64)
 
 	var asimovId interface{}
 	asimov := artist_t{Name: `Isaac Asimov`}
@@ -672,43 +672,43 @@ func TestRawRelations(t *testing.T) {
 	// Adding some publications.
 	publication.Append(publication_t{
 		Title:    `Tonari no Totoro`,
-		AuthorId: miyazakiId.(uint64),
+		AuthorId: miyazakiId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `Howl's Moving Castle`,
-		AuthorId: miyazakiId.(uint64),
+		AuthorId: miyazakiId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `Ponyo`,
-		AuthorId: miyazakiId.(uint64),
+		AuthorId: miyazakiId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `Memoria de mis Putas Tristes`,
-		AuthorId: marquezId.(uint64),
+		AuthorId: marquezId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `El Coronel no tiene quien le escriba`,
-		AuthorId: marquezId.(uint64),
+		AuthorId: marquezId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `El Amor en los tiempos del Cólera`,
-		AuthorId: marquezId.(uint64),
+		AuthorId: marquezId.(int64),
 	})
 
 	publication.Append(publication_t{
 		Title:    `I, Robot`,
-		AuthorId: asimovId.(uint64),
+		AuthorId: asimovId.(int64),
 	})
 
 	var foundationId interface{}
 	foundationId, err = publication.Append(publication_t{
 		Title:    `Foundation`,
-		AuthorId: asimovId.(uint64),
+		AuthorId: asimovId.(int64),
 	})
 	if err != nil {
 		t.Fatalf(err.Error())
@@ -716,19 +716,19 @@ func TestRawRelations(t *testing.T) {
 
 	publication.Append(publication_t{
 		Title:    `The Robots of Dawn`,
-		AuthorId: asimovId.(uint64),
+		AuthorId: asimovId.(int64),
 	})
 
 	// Adding reviews for foundation.
 	review.Append(review_t{
-		PublicationId: foundationId.(uint64),
+		PublicationId: foundationId.(int64),
 		Name:          "John Doe",
 		Comments:      "I love The Foundation series.",
 		Created:       time.Now(),
 	})
 
 	review.Append(review_t{
-		PublicationId: foundationId.(uint64),
+		PublicationId: foundationId.(int64),
 		Name:          "Edr Pls",
 		Comments:      "The Foundation series made me fall in love with Isaac Asimov.",
 		Created:       time.Now(),
@@ -749,7 +749,7 @@ func TestRawRelations(t *testing.T) {
 	)
 
 	type artistPublication_t struct {
-		Id               uint64 `db:"id"`
+		Id               int64  `db:"id"`
 		PublicationTitle string `db:"publication_title"`
 		ArtistName       string `db:"artist_name"`
 	}
@@ -777,7 +777,7 @@ func TestDataTypes(t *testing.T) {
 	var id interface{}
 	var exists uint64
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		t.Fatalf(err.Error())
 	}
 
@@ -830,7 +830,7 @@ func BenchmarkAppendRawSQL(b *testing.B) {
 	var err error
 	var sess db.Database
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -855,7 +855,7 @@ func BenchmarkAppendRawSQL(b *testing.B) {
 // Contributed by wei2912
 // See: https://github.com/gosexy/db/issues/20#issuecomment-20097801
 func BenchmarkAppendUpper(b *testing.B) {
-	sess, err := db.Open(Driver, settings)
+	sess, err := db.Open(Adapter, settings)
 
 	if err != nil {
 		b.Fatalf(err.Error())
@@ -884,7 +884,7 @@ func BenchmarkAppendTxRawSQL(b *testing.B) {
 	var sess db.Database
 	var tx *sql.Tx
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -917,7 +917,7 @@ func BenchmarkAppendTxUpper(b *testing.B) {
 	var sess db.Database
 	var err error
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
@@ -958,7 +958,7 @@ func BenchmarkAppendTxUpperMap(b *testing.B) {
 	var sess db.Database
 	var err error
 
-	if sess, err = db.Open(Driver, settings); err != nil {
+	if sess, err = db.Open(Adapter, settings); err != nil {
 		b.Fatalf(err.Error())
 	}
 
diff --git a/postgresql/layout.go b/postgresql/layout.go
index 5d3d517c1e8f7524fe93538377cdfa4d9e4f708a..ffca4557834f7206ccb371a93a8f39c76bf1091c 100644
--- a/postgresql/layout.go
+++ b/postgresql/layout.go
@@ -111,7 +111,7 @@ const (
 	`
 
 	pgsqlTruncateLayout = `
-		TRUNCATE TABLE {{.Table}}
+		TRUNCATE TABLE {{.Table}} RESTART IDENTITY
 	`
 
 	pgsqlDropDatabaseLayout = `
diff --git a/postgresql/result.go b/postgresql/result.go
index b35f173555e5d19fe086cee6b617715a4356b66e..418855ef474049a5eaf7ef46a53eb4c215910358 100644
--- a/postgresql/result.go
+++ b/postgresql/result.go
@@ -60,6 +60,11 @@ func (self *Result) setCursor() error {
 	return err
 }
 
+func (self *Result) Where(terms ...interface{}) db.Result {
+	self.where, self.arguments = whereValues(terms)
+	return self
+}
+
 // Determines the maximum limit of results to be returned.
 func (self *Result) Limit(n uint) db.Result {
 	self.limit = sqlgen.Limit(n)
@@ -203,10 +208,13 @@ func (self *Result) Update(values interface{}) error {
 		cvs = append(cvs, sqlgen.ColumnValue{sqlgen.Column{ff[i]}, "=", sqlPlaceholder})
 	}
 
+	vv = append(vv, self.arguments...)
+
 	_, err = self.table.source.doExec(sqlgen.Statement{
 		Type:         sqlgen.SqlUpdate,
 		Table:        sqlgen.Table{self.table.Name()},
 		ColumnValues: cvs,
+		Where:        self.where,
 	}, vv...)
 
 	return err