Advertisement
Guest User

Untitled

a guest
Sep 1st, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. CREATE TABLE users(
  3. id serial PRIMARY KEY,
  4. username varchar(32) NOT NULL UNIQUE ,
  5. password varchar(32) NOT NULL ,
  6. email varchar(32) NOT NULL UNIQUE,
  7. created_at TIMESTAMP NOT NULL,
  8. updated_at TIMESTAMP NOT NULL
  9. );
  10.  
  11. CREATE TABLE profiles(
  12. id serial PRIMARY KEY,
  13. user_id INTEGER NOT NULL ,
  14. NAME varchar(32),
  15. last_name varchar(32),
  16. photo_path varchar(32),
  17. about TEXT,
  18. FOREIGN KEY (user_id) REFERENCES users(id)
  19. );
  20.  
  21. '===1==='
  22.  
  23. CREATE OR REPLACE FUNCTION new_profile() RETURNS TRIGGER
  24. AS $$
  25. BEGIN
  26. INSERT INTO profiles(user_id) VALUES (NEW.id);
  27. RETURN NEW;
  28. END
  29. $$ LANGUAGE plpgsql;
  30.  
  31. DROP TRIGGER IF EXISTS tr_new_profile ON users ;
  32.  
  33. CREATE TRIGGER tr_new_profile after INSERT ON users
  34. FOR EACH ROW EXECUTE PROCEDURE new_profile();
  35.  
  36. '===2==='
  37.  
  38. CREATE OR REPLACE FUNCTION update_user() RETURNS TRIGGER
  39. AS $$
  40. BEGIN
  41. UPDATE users SET updated_at = NOW() WHERE id = OLD.user_id;
  42. RETURN old;
  43. END
  44. $$ LANGUAGE plpgsql;
  45.  
  46. DROP TRIGGER IF EXISTS tr_new_profile ON profiles ;
  47.  
  48. CREATE TRIGGER tr_update_user after INSERT ON profiles
  49. FOR EACH ROW EXECUTE PROCEDURE update_user();
  50.  
  51. '===3==='
  52.  
  53. CREATE OR REPLACE FUNCTION delete_profile() RETURNS TRIGGER
  54. AS $$
  55. BEGIN
  56. DELETE FROM profiles WHERE user_id = OLD.id;
  57. RETURN old;
  58. END
  59. $$ LANGUAGE plpgsql;
  60. DROP TRIGGER IF EXISTS tr_delete_profile ON users ;
  61.  
  62. CREATE TRIGGER tr_delete_profile before DELETE ON users
  63. FOR EACH ROW EXECUTE PROCEDURE update_user();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement