簡體   English   中英

如何在表中插入圖像路徑

[英]how to insert imagepath in table

我有一個名為employee的表,其中包含以下各列:

empid int (autoincrement,PK), 
empname varchar,
imagepath varchar

我想插入empidempnameimagepath ,其中image name應該是~/images/1.jpg類的自動遞增id的值(此處1是該行的自動遞增id)

這是不是完美的代碼???

insert into employee (name, path) 
values
(
 'sarju',
 (select '~/images/'+Cast(ISNULL(max(empid),0)+1 as varchar(50))+'.jpg' from emp)
)

這不是完美的代碼,因為MAX(ID)+1可能與下一個自動遞增值不同。 您可以使用IDENT_CURRENT函數

INSERT INTO employee (name,path) 
SELECT 'sarju','~/images/'+CAST(IDENT_CURRENT('employee') AS VARCHAR(50))+'.jpg'

插入員工(名稱,路徑)值('sarju',(從emp中選擇'〜/ images /'+ Cast(ISNULL(max(empid),0)+1作為varchar(50))+'。jpg') )

是的,這是可能的

我可能對此感到不滿意,因為很多人不喜歡觸發器,但這是它們的用途的完美示例(我真的希望世界知道這一點):

CREATE TRIGGER update_imagepath ON dbo.employee FOR insert AS

UPDATE employee
SET imagepath = '~/images/' + CAST((SELECT empid FROM inserted) AS VARCHAR) + '.jpg'
WHERE empid = (SELECT empid FROM inserted)

他們確實有一個目的,像這樣的事情就是這樣。 瞧,您只需要INSERT雇員的姓名, TRIGGER就會自動運行。 老實說,這是處理此問題的最直接的方法。 這樣做的另一個好處-如果您批量插入了一堆員工或從Management Studio運行插入語句,則觸發器仍將運行! 您無需挖掘瘋狂的INSERT語句!

編輯:在這項工作中,我不得不說Nenad Zivkovics解決方案更好。

您可以使用SCOPE_IDENTITY()獲取最新創建的ID。 這樣也更安全,這樣您就不會得到錯誤的ID。

insert into employee (name) 
values ( 'sarju')

declare @employeeId as int = SCOPE_IDENTITY()

update employee set 
path = '~/images/' + cast(@employeeId as varchar(50)) + '.jpg' 
where empid = @employeeId

如果只有一個特定的文件夾用於存儲圖像,則只需將字段imagepath計算為

CREATE TABLE employee 
(
    empid int IDENTITY(1,1) NOT NULL,
    empname VARCHAR(50) NOT NULL,
    imagepath AS ('~/images/'+cast(empid AS VARCHAR(50))+'.jpg')
)

INSERT INTO employee (empname) 
VALUES ('sarju')
INSERT INTO employee (empname) 
VALUES ('sarju2')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM