summaryrefslogtreecommitdiffstats
path: root/application/migrations/012_add_constraints.php
blob: 04c0fb9ca502b57c0a9c5f0e1063cf1b8277340d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Migration_add_constraints extends CI_Migration {

	public function up()
	{
		if ($this->db->dbdriver == 'postgre')
		{
			$this->db->query('ALTER TABLE "users" ALTER COLUMN "referrer" TYPE integer');
			$this->db->query('ALTER TABLE "users" ALTER COLUMN "referrer" DROP NOT NULL');
			$this->db->query('CREATE INDEX "users_referrer_idx" ON "users" ("referrer")');
			$this->db->query('UPDATE "users" SET "referrer" = NULL where "referrer" = 0');
			$this->db->query('
				ALTER TABLE "users"
					ADD CONSTRAINT "referrer_user_fkey" FOREIGN KEY ("referrer")
						REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE RESTRICT
			');
		}
		else
		{
			$this->db->query("ALTER TABLE `users` ADD INDEX(`referrer`);");
			$this->db->query("ALTER TABLE `users` CHANGE `referrer` `referrer`
				INT(8) UNSIGNED NULL;");
			$this->db->query("UPDATE `users` SET `referrer` = NULL where `referrer` = 0;");
			$this->db->query("ALTER TABLE `users` ADD FOREIGN KEY (`referrer`)
				REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;");
		}
	}

	public function down()
	{
		show_error("downgrade not supported");
	}
}