Sql-Server
是否可以允許期望列被讀/寫的遺留程式碼的直寫計算列?
我有這個用於 IP 儲存的現有表:
CREATE TABLE [dbo].[IPAddresses]( [ID] [int] IDENTITY(1,1) NOT NULL, [IPv4Address] [varchar](15) NULL, [IPv6Address] [varchar](45) NULL, CONSTRAINT [PK_IPAddresses] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [UniqueIPv4Address] UNIQUE NONCLUSTERED ( [IPv4Address] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
我想將此表轉換為使用一個整數(或幾個整數)來儲存此 IP 資訊。我想根據我的新列來製作
IPv4Address
和計算列以進行儲存。IPv6Address
我面臨的問題是我有一些遺留客戶訪問這個數據庫,他們需要直接將“192.168.1.54”寫入我的
IPv4Address
專欄。我希望數據庫能夠接受這一點,將其轉換為整數,並將其儲存在定義為int
.是否有可能
- 編寫現有表的轉換腳本,將所有“字元串”IP 轉換為其整數值並將其儲存在 int 列中,併計算這些“字元串”列
- 允許遺留客戶端“寫入”這些計算列並截取該數據,將其轉換為 int,並將其透明地儲存給遺留客戶端?
我相當確定我可以編寫一個腳本來轉換數據,但如果我不能讓我的數據庫的舊客戶端透明,我不想浪費我的時間。所以任何指導都會有很長的路要走。
您可以使用INSTEAD OF INSERT 觸發器。