Sql-Server-2008-R2
一張表在兩個數據庫中使用
我在
db1
和中有一個常見的產品表db2
。我想把它做成一張桌子,因為它有一個庫存(產品庫存)。在兩個不同的數據庫之間共享產品表的最佳解決方案是什麼?我有幾個想法:
- 在更新/刪除/插入一個表時寫入觸發器並同時更新另一個表。
- 在產品表上創建視圖並在第二個數據庫中使用(我不知道如何)
- 複製(我不知道如何)
你能指導我最好的方法嗎?
我只想在 db2 中創建一個同義詞(假設表存在於 db1 中)。這將讓您直接指向源表而不會混淆視圖,並且如果表的架構發生更改,您將無需維護視圖:
CREATE SYNONYM dbo.CommonTableName FOR db1.dbo.CommonTableName
在第二個數據庫中創建指向第一個數據庫中的表的同義詞。這樣,您可以無縫地將兩個數據庫中的表用於任何操作(插入、更新、刪除、選擇等)。
CREATE DATABASE FirstDB ; CREATE DATABASE SecondDB ; GO USE FirstDB; GO CREATE TABLE Products(id INT IDENTITY PRIMARY KEY); GO USE SecondDB; -- Create a synonym to be able to reach the product table from the second database CREATE SYNONYM dbo.Products FOR FirstDB.dbo.Products; -- Add some values to the common table, available from both databases INSERT Products DEFAULT VALUES; INSERT Products DEFAULT VALUES; INSERT Products DEFAULT VALUES; -- any statement is available for both databases SELECT * FROM FirstDb.dbo.Products; SELECT * FROM SecondDB.dbo.Products;